使用Selenium WebDriver,Python和Chrome编写您的第一个Web测试

准备好WebDriver后,让我们编写第一个Web测试!测试将是一个简单的DuckDuckGo搜索。DuckDuckGo是一个不跟踪用户数据的搜索引擎。就像任何其他搜索引擎一样,用户可以输入搜索短语并获得指向匹配网站的链接。

在编写自动化代码之前,最好总是以简单的语言编写测试过程。编写程序迫使我们首先考虑被测行为。这是我们的测试过程:

  1. 导航到DuckDuckGo主页

  2. 输入搜索词组

  3. 验证:

    1. 结果显示在结果页面上

    2. 搜索词出现在搜索栏中

    3. 至少一个搜索结果包含搜索短语

这是相当基本的,但涵盖了端到端的典型搜索行为。

代码

将以下测试功能添加到:tests/test_web.py

def test_basic_duckduckgo_search(browser):
  URL = 'https://www.duckduckgo.com'
  PHRASE = 'panda'
  
  browser.get(URL)
  
  search_input = browser.find_element_by_id('search_form_input_homepage')
  search_input.send_keys(PHRASE + Keys.RETURN)
  
  link_divs = browser.find_elements_by_css_selector('#links > div')
  assert len(link_divs) > 0
  
  xpath = f"//div[@id='links']//*[contains(text(), '{PHRASE}')]"
  results = browser.find_elements_by_xpath(xpath)
  assert len(results) > 0
  
  search_input = browser.find_element_by_id('search_form_input')
  assert search_input.get_attribute('value') == PHRASE

test_basic_duckduckgo_search函数按照Arrange-Act-Assert模式执行我们的测试过程。请注意,测试函数声明了一个名为的参数browser,该参数  与我们用于ChromeDriver设置和清除的固定装置相同。每次运行此测试时,pytest都会自动调用固定装置并注入WebDriver参考。然后,测试函数使用该browser变量进行多个WebDriver调用。让我们看看这些调用是如何工作的。

URL = 'https://www.duckduckgo.com'

该测试将DuckDuckGo主页的URL声明为变量,以提高可读性和可维护性。

PHRASE = 'panda'

这是测试将使用的搜索短语。由于测试涵盖了“基本”搜索,因此该短语并不太重要。其他行使不同行为的测试应使用更复杂的短语。再次,测试将其声明在测试功能的顶部,以提高可读性和可维护性。

browser.get(URL)

测试的起点是DuckDuckGo主页。此调用将浏览器导航到给定的URL。被警告,虽然:此调用并  不会等待页面加载。它只是启动加载交互。

search_input = browser.find_element_by_id('search_form_input_homepage')

自动化Web

你可能感兴趣的:(java,python,css,html,selenium)