赵走x博客
网站访问量:151563
首页
书籍
软件
工具
古诗词
搜索
登录
5、TestCase类
4、unittest单元测试框架
3、支持跨浏览器
2、 第一个Selenium Python脚本
1、基于Python的Selenium WebDriver入门
2、 第一个Selenium Python脚本
资源编号:75969
Selenium自动化测试:基于Python语言
书籍
热度:87
我们现在可以开始创建和运行自动化测试脚本了。就从Selenium WebDriver开始,然后创建一个 Python脚本,用Selenium WebDriver提供的类和方法模拟用户与浏览器的交互。
我们现在可以开始创建和运行自动化测试脚本了。就从Selenium WebDriver开始,然后创建一个 Python脚本,用Selenium WebDriver提供的类和方法模拟用户与浏览器的交互。 我们会使用一个简单的Web应用程序(本书上大多数例子都是基于这个应用程序)。这个简单的Web应用程序是基于一个著名电子商务框架Magento构建的。你可以在以下网址里找到这个应用程序:http://demo.magentocommerce.com/ 。 >示例代码下载 : https://github.com/upgundecha/learnsewithpython 。 在这个简单的脚本中,我们会通过接下来的步骤去访问这个应用程序,搜索产品并在搜索结果页面中列出产品的名称。 * (1)新建searchproducts.py的文件。复制下列代码到searchproducts.py中。 ``` from selenium import webdriver # create a new Firefox session driver = webdriver.Firefox() driver.implicitly_wait(30) driver.maximize_window() # navigate to the application home page driver.get("http://demo.magentocommerce.com") # get the seach textbox search_field = driver.find_element_by_name("q") search_field.clear() # enter search keyword and submit search_field.send_keys("phones") search_field.submit() # get all the anchor elements which have product names displayed # currently on result page using find_elements_by_xpath method products = driver.find_element_by_xpath("//h2[@class='product-name']/a") # get the number of anchor elements found print("Found {} products:".format(len(products))) # iterate through each anchor element and print the text # that is name of the produt for product in products: print(print.text) # close the browser window driver.quit() ``` * (2)运行,脚本开始执行,你会看到新弹出一个Firefox浏览器窗口访问演示网址,接着在Firefox浏览器窗口中会看到被执行的Selenium命令。如果一切运行顺利,最后脚本会关闭Firefox浏览器窗口。如下图所示,这个脚本会在PyCharm的控制台中打印产品的清单。 ``` ,.. ``` 接下来,我们将会花点时间分析刚才创建的脚本。我们分析每个语句,初步地认识Selenium WebDriver。在本书的后面部分还有很多这样的分析。 Selenium.webdriver模块实现了Selenium所支持的各种浏览器驱动程序类,包括Firefox浏览器、Chrome浏览器、IE浏览器、Safari浏览器和多种其他浏览器。另外,RemoteWebDriver则是用于调用远程机器进行浏览器测试的。 我们需要从Selenium包中导入WebDriver才能使用Selenium WebDriver方法: ``` from selenium import webdriver ``` 接着,我们还需要选用一个浏览器驱动实例,它会提供一个接口去调用Selenium命令来跟浏览器交互。在这个例子中,我们使用的是Firefox浏览器。我们可以通过下方命令来创建一个Firefox浏览器驱动实例。 ``` driver=webdriver.Firefox() ``` 在运行期间,这会加载一个新的Firefox浏览器窗口。我们也可以在这个驱动上设置一些参数,如: ``` driver.implicityly_wait(30) driver.maximize_window() ``` 我们使用30秒隐式等待时间来定义Selenium执行步骤的超时时间,并且调用Selenium API来最大化浏览器窗口。我们会在第5章“元素等待机制”中学习更多关于隐式等待的内容。 接着,我们使用示例程序的URL作为参数,通过调用driver.get()方法访问该应用程序。在get()方法被调用后,WebDriver会等待,一直到页面加载完成才继续控制脚本。 在加载页面后,Selenium会像用户真实使用那样,和页面上各种各样的元素交互。例如,在应用程序的主页,我们需要在输入框中输入一个搜索内容,然后单击Search按钮。这些元素作为HTML输入元素实现,Selenium需要找到这些元素来模拟用户操作。Selenium WebDriver提供多种方法来定位和操作这些元素,例如设置值,单击按钮,在下拉组件中选择选项等。我们可以在第3章“元素定位”中了解更多。 在这个例子中,我们使用find_element_by_name方法来定位搜索输入框。这个方法会返回第一个name属性值与输入参数匹配的元素。HTML元素是用标签和属性来定义的,我们可以使用这些信息来定位一个元素,步骤如下: * (1)在这个例子中,搜索输入框有一个值为q的name属性,我们使用这个属性来定位,代码如下。 ``` search_field=driver.find_element_by_name("q") ``` * (2)一旦找到这个搜索输入框,我们可以使用clear()方法来清理之前的值(如果搜索输入框已经有值的话),并且通过send_keys()方法输入新的特定的值。接着我们通过调用submit()方法提交搜索请求。 ``` search_field.clear() search_field.send_keys("phones") search_field.submit() ``` * (3)在提交搜索请求后,Firefox浏览器会加载结果页面。结果页面中有一系列与搜索项(phones)匹配的产品。我们可以读取结果列表,并且可以使用find_elements_by_xpath方法获取路径是以`
`标签结尾的所有产品名称。它将会返回多于1个的元素列表。 ``` products=driver.find_elements_by_xpath("//h2[@class='product-name']/a") ``` * (4)接着,我们打印在页面中展示的产品个数(即符合路径以`
`标签结尾的元素个数)和产品的名称(即`
`标签的text属性值)。 ``` print("Found {} products:".format(len(products))) for product in products: print(print.text) ``` * (5)在脚本的最后,我们使用driver.quit()方法来关闭Firefox浏览器。 ``` driver.quit() ``` 这个例子直观地向我们展示如何使用Selenium WebDriver和Python配合来创建一个简单的自动化脚本。我们在这个脚本里面并没有测试什么。在本书后面的章节,我们将会扩展这个简单的脚本为一组测试脚本,并且会引用多个其他库和Python的功能。