Selenium自动化测试 基于 Python 语言(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-07 04:29:24

点击下载

作者:(印度)冈迪察.U(Unmesh Gundecha )

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Selenium自动化测试 基于 Python 语言

Selenium自动化测试 基于 Python 语言试读:

前言

Selenium是一个主要用于Web应用程序自动化测试的工具集合,在行业内已经得到广泛的应用。然而其作用不局限于测试领域,还可以用于屏幕抓取与浏览器行为模拟等操作。它支持主流的浏览器,包括Firefox、IE、Chrome、Safari以及Opera等。

Selenium包括一系列的工具组件。● Selenium IDE:是嵌入到Firefox浏览器的插件,用于在Firefox上

录制与回放Selenium 脚本。图形化的界面可以形象地记录下用

户在浏览器中的操作,非常方便使用者了解与学习。目前它只能

在Firefox下使用,好在它能将录制好的脚本转换成各种

Selenium WebDriver支持的程序语言,进而扩展到更广泛的浏览

器类型。● Selenium WebDriver:其实质上就是可以支持多种编程语言,并

且有用于操作浏览器的一套API。支持多类型浏览器、跨操作系

统平台(包括Linux、Windows以及Mac OS X),是真正意义上

的跨浏览器测试工具。WebDriver为诸如Java、C#、Python、

Ruby、PHP、JavaScript等语言分别提供了完备的、用于实现

Web自动化测试的第三方库。● Selenium Standalone Server:包括被大家广泛了解的Selenium

Grid、远程控制、分布式部署等,均可实现Selenium 脚本的高效

执行与拓展。我们利用Grid使得自动化测试可以并行运行,甚至

是在跨平台、异构的环境中运行,包括目前主流的移动端环境,

如Android、iOS。

正如书名所述,这是一本介绍如何用Python语言调用Selenium WebDriver接口,进而实现对Web应用自动化测试的指导书。本书描述了从Selenium安装配置到基本使用,再到创建、调试、运行自动化脚本等进阶的操作。当然在开始之前,你可能需要先具备一定的Python语言基础。内容介绍

第1章基于Python的Selenium WebDriver入门 从安装Python、Selenium WebDriver开始,到我们如何选择适合的Python编辑器,以及我们小试牛刀的第一个自动化测试脚本,并且成功地将这一脚本运行在不同浏览器上。

第2章使用unittest编写单元测试 本章带领我们结合unittest实现单元测试。通过转换后的脚本,有助于我们更好地完善单元测试用例。借助unittest实现测试用例集的整体运行,并将HTML格式的测试结果及时推送给项目的相关人员。

第3章元素定位 本章告诉你如何通过浏览器自带的开发者模式去定位页面中各类型元素。Selenium通过获取这些元素的定位,进而实现模拟浏览器操作与参数捕获。这一章你将学会各种定位元素的方法,包括XPath和CSS以及对应的示例。

第4章Selenium Python API介绍 学习如何通过WebDriver与包括页面元素、JavaScript 提示框、框架(frames)、窗口在内的各类对象进行交互,以及怎样进行浏览器回放、元素传值、鼠标点击、下拉菜单选择、多窗口切换等具体操作。

第5章元素等待机制 介绍多种设置等待方法,用于提高Selenium自动化测试脚本的稳定运行。带你理解显式等待或隐式等待的方法是如何应用于我们的测试脚本。

第6章跨浏览器测试 我们将深入学习如何在远程机器或Selenium Grid上通过Remote WebDriver实现测试脚本跨各类型浏览器的测试。Selenium Grid可使得我们在多浏览器与多操作系统的排列组合中兼容测试,甚至支持像PhantomJS这样的无UI界面的浏览器。本章的最后,我们还将了解Sauce Labs 和BrowserStack等第三方外部测试服务(云测试)。

第7章移动端测试 我们使用Selenium WebDriver、Appium实现在包括iOS端、Android端以及Android模拟器在内的移动设备上的自动化测试。另外,本章还有App测试的具体示例。

第8章Page Object与数据驱动测试 介绍这两种重要的设计模式,引导我们搭建更持续、更高效的测试框架。其中,Page Object设计模式可帮助我们实现对界面细节的封装,并将一组用户行为构建在单个类中,提升自动化测试脚本的易读性和可复用性,从而达到更适应UI的频繁变化的目的。另外,我们还将学习用unittest实现数据驱动测试。

第9章Selenium WebDriver的高级特性 包括复杂的鼠标与键盘操作、cookies操作、窗口截屏,甚至录制整个测试过程。

第10章第三方工具与框架集成 通过Selenium与持续集成工具的搭配,我们可以轻松地搭建自动化验收测试框架。本章中展示了“通过Selenium创建自动化验收测试用例,然后细化基于UI的自动化测试脚本,最后配置持续集成工具Jenkins,最终实现了对被测程序每日构建、每日自动化验收测试的联动效果”的典型案例。

通过对本书的学习,你将能够用Python语言通过调用Selenium WebDriver接口,搭建属于你自己的Web应用自动化测试框架。阅读前的准备工作

在阅读本书之前,你需要掌握Python语言基本语法以及Web前端的相关知识(如HTML、JavaScript、CSS和XML)。如果你能编写一些简单的包括循环、条件判断、定义类等语法的Python脚本,你就能轻松地理解本书中的示例代码。每行示例代码我们都花了很大精力去注释说明,就是希望你能达到最佳的学习效果。还有一些前期准备的软件、工具以及环境配置都在第1章有明确的说明,你需要在你的机器上准备好访问终端、Python解释器以及浏览器。适合哪些人阅读

如果你从事QA或软件测试、软件开发、Web应用开发等相关工作,希望用Python语言调用Selenium WebDriver,以实现对Web应用的自动化测试,那么这本书一定是你较好的选择!在学习Selenium理论之前,我们建议你掌握Python语言的基本语法。通过整本书的通篇学习,你将全面地理解Selenium WebDriver的相关知识,并且能有效地帮助你实现自动化测试。约定

本书中,你可能会发现不同类型的信息,呈现出的文本风格不尽相同。我们在这里将罗列不同类型的文本风格以及对应的含义,方便你阅读。

代码文本的样式如下。# create a new Firefox session driver = webdriver.Firefox() driver.implicitly_wait(30) driver.maximize_window()

当我们想格外强调代码中的一部分时,相应的代码字体会被加粗,示例如下。# run the suitexmlrunner.XMLTestRunner(verbosity=2,output='test-reports'). run(smoke_tests)

命令行的输入\输出的样式如下。pip install -U selenium

新的措辞与关键语句会被显示为粗体。关键语句就是指出现在系统界面、菜单项或对话框等位置的关键操作,例如,“在Tools下拉菜单中选择Internet Options”。警告或重要的提示,会出现在这样的括号中。

 提醒或小窍门,会出现在这样的括号中。读者反馈

我们十分乐见读者的反馈,让我们了解你对本书的想法——包括好与不好的评价。因为你的反馈将使我们以后可以更好地为读者提供有价值的内容。

可以通过我们的邮箱地址contact@epubit.com.cn将你的反馈信息告诉我们,邮件的主题需要注明书籍的全名。

当然,如果你也有专注的主题,并且有兴趣编辑或撰写图书,欢迎你联系我们,邮箱为zhangtao@ptpress.com.cn。第1章基于Python的Selenium WebDriver入门

Selenium可以自动地操纵浏览器来做很多事情,它可以模拟我们与浏览器的交互,比如,访问网站,单击链接,填写表单,提交表单,浏览网页等,而且支持大多数主流的浏览器。如果要使用Selenium WebDriver,我们首先要选择一种语言来编写自动化脚本,而这个编程语言需要有Selenium client library支持。

本书中,我们将使用支持Selenium client library的Python语言来编写自动化脚本。Python是一门被广泛应用的高级编程语言,它是非常容易上手的,而且它的语法使我们只需要简短的代码就可以用来表达思想。Python设计的初衷就非常强调代码的可读性,它的基础架构使我们可以很方便地写无论大段的还是很少的程序代码,还提供大量的内置库、函数以及用户编写的第三方库,从而能够很容易地实现一些复杂的功能。

基于Python的Selenium WebDriver client library实现了所有Selenium WebDriver特性,而且能够通过Selenium standalone server来远程地和分布式地测试B/S项目。Selenium language bindings的开发者包含David Burns,Adam Goucher,Maik Röder,Jason Huggins,Luke Semerau,Miki Tebeka和Eric Allenin。

Selenium WebDriver client library 支持以下Python版本:2.6,2.7,3.2和3.3。

本章将介绍基于Python的Selenium WebDriver client library的安装步骤、基本特性和总体架构。

本章包括以下主题:● 安装Python和Selenium包;● 选择和设置Python编辑器;● Selenium WebDriver基于Python编写实例脚本;● 实现基于IE和Chrome的跨浏览器支持。1.1 环境准备

作为学习使用基于Python的Selenium的第一步,我们需要在计算机上安装好需要的软件。在下面的章节中让我们一步步来配置所需的基础环境。1.1.1 安装Python

在安装有Linux系统、Mac OS X系统和其他UNIX系统的计算机上,Python是系统默认安装好的。对于Windows系统,就需要另外单独安装Python了。基于不同平台的Python安装程序都可以在以下网站找到:http://python.org/download/。本书所有的例子都是基于Python 2.7和Python 3.0编

写,并在Windows 8 系统上经过测试的。1.1.2 安装Selenium包

Selenium安装包里包含了Selenium WebDriver Python client library。为了使安装Selenium 包更简单,可以用pip安装工具:https://pip.pypa.io/en/latest/。

使用pip,可以非常简单地通过下面的命令来安装和更新Selenium安装包。pip install -U selenium

安装过程非常简单。该命令将会安装Selenium WebDriver client library在计算机上,包含我们使用Python来编写自动化脚本需要的所有模块和类。pip工具将会下载最新版本的Selenium安装包并安装在计算机上。这个可选的 -U 参数将会更新已经安装的旧版本至最新版。

也可以从网站下载最新版本的Selenium安装包:https://pypi.python.org/pypi/selenium。在页面的右上角单击下载按钮,下载后解压文件,然后通过下面的命令来安装。python setup.py install1.1.3 浏览Selenium WebDriver Python文档

Selenium WebDriver Python client library 文档可以从以下网址查看。

http://selenium.googlecode.com/git/docs/api/py/api.html

下面是截图。

这里提供了Selenium WebDriver的所有核心类和函数的详细信息。对于以下链接中的Selenium文档也要多加关注。● 官方文档:http://docs.seleniumhq.org/docs/。这里有关于

Selenium所有组件的说明文档以及基于一些所支持的语言编写的

实例。● Selenium Wiki地址:https://code.google.com/p/selenium/w/list。

这里列举了将在后面的章节能够看到的有用的主题。1.1.4 选择一个IDE

现在已经安装好了Python和Selenium WebDriver,还需要一个代码编辑器(IDE)来编写自动化脚本。一个好的IDE能够帮助我们提高产出,而且还能做一些其他的事情让编码变得简单。当我们用简单的编辑器来编写Python代码,比如Emacs、Vim或Notepad,用编辑器会让事情变得简单多了。其实有很多的IDE可供选择。一般来说,一款好的IDE能够通过以下一些特性帮忙开发者提高开发速度并节省编码时间:● 图形化界面编辑器,具备代码编译和代码自动补全功能;● 方便地查看类和函数代码;● 语法高亮显示;● 具备项目管理功能;● 支持代码模板;● 具备支持单元测试和调试的工具;● 支持源码管理。

如果你是个Python开发新手,或者是第一次接触Python的测试工程师,你的研发同事们能够帮助你安装和配置相应的IDE。

然而,如果你是第一次接触Python而不知道选择哪个IDE,这里有些建议可以帮助你做出选择。1.1.4.1 PyCharm

PyCharm是JetBrains公司出品的软件,该公司是专业的软件开发工具的引领者,产品包含大家熟知的IntelliJ IDEA、RubyMine、PhpStorm和TeamCity。

PyCharm是一款设计精巧、功能强大、应用广泛而且工作良好的IDE。它继承了JetBrains 公司其他产品的一贯经验,拥有很多能够提升软件开发效率的特性。

PyCharm支持Windows系统、Linux系统和Mac系统。要想知道更多PyCharm的特性,可以访问以下网址:http://www.jetbrains.com/pycharm/。

PyCharm有两种版本——社区版和专业版。社区版是免费的,而专业版是需要付费的。下面是PyCharm社区版运行一个简单Selenium脚本例子的截图。

社区版能够很好地构建和运行Selenium脚本,并提供调试支持。在本书后面的章节将会使用PyCharm。本章后面的部分,我们一步步来安装PyCharm,并用它来创建第一个Selenium脚本。本书中所有的例子都是用PyCharm构建的,不过读者

也可以很容易地应用别的IDE来构建这些例子。1.1.4.2 PyDev Eclipse plugin

PyDev Eclipse plugin是另一款在Python开发者中应用广泛的代码编辑器。Eclipse是一款知名的开源代码编辑器,主要应用于构建Java程序,它通过插件式架构设计从而实现对其他多种编程语言的支持。

Eclipse是一款跨平台的IDE,支持Windows系统、Linux系统和Mac系统。可以在以下网址获取Eclipse的最新版本:http://www.eclipse.org/downloads。

PyDev plugin需要在安装完Eclipse后单独安装。可以按照Lars Vogel编写的安装指南来安装PyDev:http://www.vogella.com/tutorials/Python/article.html。也可以在以下网址查看安装说明:http://pydev.org/。

下面是使用PyDev Eclipse plugin 运行一个简单Selenium脚本例子的截图。1.1.4.3 PyScripter

对于Windows系统的用户,PyScripter也是一个很好的选择。它是一款开源的、轻量级的IDE。PyScripter像其他流行的IDE一样具有代码编译和代码自动补全的特性,并且提供测试和调试功能支持。可以从以下网站下载该软件并获取更多的信息:https://code.google.com/ p/pyscripter/。

下面是在 PyScripter上运行一个简单 Selenium 脚本实例的截图。1.1.5 PyCharm设置

我们看过这些可选择的IDE后,回到PyCharm的设置。本书中所有的例子脚本都是通过PyCharm创建的,不过读者也可以使用其他IDE来创建并运行这些实例。下面将通过以下步骤来设置PyCharm,开始我们的Selenium Python之旅。(1)从JetBrains官网下载和安装PyCharm。(2)启动PyCharm社区版,在启动页面上单击Create New Project选项。(3)在Create New Project对话框,参考下面的截图,在Project name文本框内输入工程名称。在本例中,setests作为工程名称。第一次运行PyCharm还需要配置解释器。单击Interpreter右侧的按钮来配置解释器。(4)在弹出的Python Interpret对话框中,单击加号,PyCharm会显示出已经安装好的解释器路径。从Select Interpreter Path选择对应的解释器。(5)PyCharm 将会配置好刚才选择的解释器。在Packages选项卡会显示Python安装包内自带的一些工具包。单击Apply按钮,然后单击OK按钮。(6)返回到Create New Project对话框,单击OK按钮,项目创建成功。1.2 第一个Selenium Python脚本

我们现在可以开始创建和运行自动化测试脚本了。就从Selenium WebDriver开始,然后创建一个Python脚本,用Selenium WebDriver提供的类和方法模拟用户与浏览器的交互。

我们会使用一个简单的Web应用程序(本书上大多数例子都是基于这个应用程序)。这个简单的Web应用程序是基于一个著名电子商务框架Magento构建的。你可以在以下网址里找到这个应用程序:http://demo.magentocommerce.com/。示例代码下载 如果你是在http://packtpub.com购买本书,你可以通过

你的账号在该网址上下载示例代码文件。如果你是从其他地

方购买本书,你可以访问http://www.packtpub.com/support并注册,我们会把示例代码文件直接发送到你的邮箱

中。示例代码也被托管在github中,访问地址为:https://

github.com/upgundecha/learnsewithpython。

在这个简单的脚本中,我们会通过接下来的步骤去访问这个应用程序,搜索产品并在搜索结果页面中列出产品的名称。(1)我们使用早前在部署PyCharm环境时创建的项目。创建一个引用了Selenium WebDriver client library的Python脚本。在项目资源管理器视图中,右击setests,在弹出的菜单中依次选择New→Python File。(2)在New Python file对话框中,在文件名文本框中输入“searchproducts”,然后单击OK按钮。(3)PyCharm会在代码编写区域增加一个名为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 search textboxsearch_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_elements_by_xpath("//h2[@class='product-name']/a")# get the number of anchor elements foundprint "Found " + str(len(products)) + " products:"# iterate through each anchor element and print the text that is# name of the productfor product in products:   print product.text # close the browser window driver.quit()如果你使用的是其他IDE编译工具,请同样创建一个

新的文件,复制代码到文件中并保存为searchproducts.py。(4)可以通过以下方式运行脚本:在PyCharm代码窗口中使用快捷键Ctrl + Shift+ F10或者在Run菜单中选择Run 'searchproducts'命令。脚本开始执行,你会看到新弹出一个Firefox浏览器窗口访问演示网址,接着在Firefox浏览器窗口中会看到被执行的Selenium命令。如果一切运行顺利,最后脚本会关闭Firefox浏览器窗口。如下图所示,这个脚本会在PyCharm的控制台中打印产品的清单。 我们也可以在命令行中运行脚本。打开命令行工具,切

换到setests项目所在的目录中,运行以下命令:

python searchproducts.py在本书后面部分,我们更喜欢选择使用命令行方式去执

行测试脚本。

接下来,我们将会花点时间分析刚才创建的脚本。我们分析每个语句,初步地认识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 " + str(len(products)) + " products:"for product in products:  print product.text(5)在脚本的最后,我们使用driver.quit()方法来关闭Firefox浏览器。driver.quit()

这个例子直观地向我们展示如何使用Selenium WebDriver和Python配合来创建一个简单的自动化脚本。我们在这个脚本里面并没有测试什么。在本书后面的章节,我们将会扩展这个简单的脚本为一组测试脚本,并且会引用多个其他库和Python的功能。1.3 支持跨浏览器

目前我们已经在Firefox浏览器构建并运行了脚本。Selenium支持各种浏览器,读者可以在不同的浏览器中进行自动化测试。它支持的浏览器包括IE浏览器、Google Chrome浏览器、Safari浏览器、Opera浏览器,甚至是像PhantomJS这样的无UI界面的浏览器。接下来的部分,我们会修改刚才创建的脚本,以便在IE浏览器和Google Chrome浏览器中运行脚本,以此来验证Selenium WebDriver跨浏览器的兼容性。1.3.1 设置IE浏览器

在IE浏览器中运行脚本步骤会多一些。我们需要下载并安装InternetExplorerDriver。InternetExplorerDriver是一个独立的可执行的服务,它实现WebDriver的协议,使得WebDriver可以与测试脚本和IE浏览器交互。InternetExplorerDriver支持Windows XP、Vista、Windows 7和Windows 8操作系统下的主要IE版本。通过以下步骤安装InternetExplorerDriver。(1)在http://www.seleniumhq.org/download/中下载InternetExplorerDriver服务。你可以根据自己的操作系统来选择下载32位或64位版本。(2)在下载完成后,解压文件,并把文件复制到存储脚本的目录中。(3)在IE 7及其以上版本,每个区域的保护模式设置一定要有相同的值。在每个区域中保护模式要么启用,要么关闭。设置保护模式的步骤如下。

① 在工具菜单下选择Internet选项。

② 在Internet选项对话框中,单击安全标签页。

③ 在“选择区域以查看或更改安全设置”中选择每一个区域,确定每个区域的保护模式的值保持一致(要么选中,要么不选中)。所有区域用相同的设置,如下图所示。在使用InternetExplorerDriver时,注意保持浏览器缩放

等级设置成100%,以此来保证鼠标的单击事件能点到正确

的坐标。(4)修改脚本使其支持IE浏览器。我们通过以下方式来使用IE替代Firefox实例。import osfrom selenium import webdriver# get the path of IEDriverServerdir = os.path.dirname(__file__)ie_driver_path = dir + "\IEDriverServer.exe"# create a new Internet Explorer sessiondriver = webdriver.Ie(ie_driver_path)driver.implicitly_wait(30)driver.maximize_window()# navigate to the application home pagedriver.get("http://demo.magentocommerce.com/")# get the search textboxsearch_field = driver.find_element_by_name("q")search_field.clear()# enter search keyword and submitsearch_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 methodproducts = driver.find_elements_by_xpath("//h2[@class='product-name']/a")# get the number of anchor elements foundprint "Found " + str(len(products)) + " products:"# iterate through each anchor element and print the text that is # name of the productfor product in products:  print product.text# close the browser windowdriver.quit()

在这个脚本中,在创建IE浏览器实例时,我们传递了InternetExplorerDriver的路径。(5)运行脚本后,Selenium会加载InternetExplorerDriver服务,用它来启动浏览器和执行脚本。InternetExplorerDriver服务在Selenium脚本和浏览器之间扮演类似中介角色。实际执行的步骤与我们在Firefox浏览器观察的类似。 在https://code.google.com/p/selenium/wiki/InternetExplorerDriver中可以获取更多关于IE的重要设

置。在https://code.google.com/p/selenium/wiki/DesiredCapabilities 查阅DesiredCapabilities的文章。1.3.2 设置Google Chrome浏览器

在Google Chrome浏览器中设置和运行脚本的步骤与IE浏览器的相似。我们需要下载ChromeDriver服务。ChromeDriver服务是一个由Chromium team开发维护的独立的服务,它支持Windows操作系统、Linux操作系统和Mac操作系统。使用以下步骤来设置ChromeDriver服务。(1)在http://chromedriver.storage.googleapis.com/index.html下载ChromeDriver服务。(2)下载完ChromeDriver服务后,解压文件,并把文件复制到存储脚本的目录中。(3)修改脚本使其支持Chrome浏览器。我们通过以下方式创建Chrome实例,用此来替换Firefox浏览器实例。import osfrom selenium import webdriver# get the path of chromedriverdir = os.path.dirname(__file__)chrome_driver_path = dir + "\chromedriver.exe"# remove the .exe extension on linux or mac platform# create a new Chrome sessiondriver = webdriver.Chrome(chrome_driver_path)driver.implicitly_wait(30)driver.maximize_window()# navigate to the application home pagedriver.get("http://demo.magentocommerce.com/")# get the search textboxsearch_field = driver.find_element_by_name("q")search_field.clear()# enter search keyword and submitsearch_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 methodproducts = driver.find_elements_by_xpath("//h2[@class='product-name']/a")# get the number of anchor elements foundprint "Found " + str(len(products)) + " products: "# iterate through each anchor element and print the text that is # name of the productfor product in products:  print product.text# close the browser windowdriver.quit()

在这个脚本中,在创建Chrome浏览器实例时,我们传递了ChromeDriver的路径。(4)运行脚本后,Selenium会加载ChromeDriver服务,用它来启动浏览器和执行脚本。

实际执行的步骤与我们在Firefox浏览器观察的类似。 想了解更多关于ChromeDriver,请访问https://

code.google.com/p/selenium/ wiki/ChromeDriver和https://

sites.google.com/a/chromium.org/chromedriver/ home。1.4 章节回顾

在本章中,我们介绍了Selenium和它的组件。通过pip工具安装了Selenium包。接着介绍了多个用于编写Selenium和Python代码的编辑器和IDE工具,部署了PyCharm环境。然后我们通过创建基于示例程序的测试脚本,成功运行在Firefox浏览器,并分析了整个过程。最后,我们举一反三(分别在IE浏览器和Chrome浏览器中配置和运行脚本)来验证Selenium WebDriver的跨浏览器的特性。

在下一章,我们将学习如何通过Selenium WebDriver使用unittest库来创建自动化单元测试。我们也将学习如何创建并运行一组测试脚本。第2章使用unittest编写单元测试

Selenium WebDriver是一个浏览器自动化测试的API集合。它提供了很多与浏览器自动化交互的特性,并且这些API主要是用于测试Web程序。如果仅仅使用Selenium WebDriver,我们无法实现执行测试前置条件、测试后置条件,比对预期结果和实际结果,检查程序的状态,生成测试报告,创建数据驱动的测试等功能。在本章,我们将学习如何使用unittest来创建基于Python的Selenium WebDriver测试脚本。

本章包含以下主题:● 什么是unittest?● 使用unittest来写Selenium WebDriver测试;● 用TestCase类来实现一个测试;● 学习unittest提供的不同类型的assert方法;● 为一组测试创建TestSuite;● 使用unittest扩展来生成HTML格式的测试报告。2.1 unittest单元测试框架

unittest(一般称为PyUnit)是从Java程序开发中广泛应用的JUnit启发而来的。我们可以使用unittest为任何项目创建全面的测试套件。unittest也是Python中用来测试各种标准类库模块的,甚至包括unittest自己。可以在以下网址查看unittest的文档:http://docs.python.org/2/library/unittest.html。

unittest使我们具备创建测试用例、测试套件、测试夹具的能力。可以通过下面的图来了解所有的组件。● Test Fixture(测试夹具):通过使用测试夹具,可以定义在单个

或多个测试执行之前的准备工作和测试执行之后的清理工作。● Test Case(测试用例):一个测试用例是在unittest中执行测试的

最小单元。它通过unittest提供的assert方法来验证一组特定的操

作和输入以后得到的具体响应。unittest提供了一个名称为

TestCase的基础类,可以用来创建测试用例。● Test Suite(测试套件):一个测试套件是多个测试或测试用例的

集合,是针对被测程序的对应的功能和模块创建的一组测试,一

个测试套件内的测试用例将一起执行。● Test Runner(测试执行器):测试执行器负责测试执行调度并且

生成测试结果给用户。测试执行器可以使用图形界面、文本界面

或者特定的返回值来展示测试执行结果。● Test Report(测试报告):测试报告用来展示所有执行用例的成

功或者失败状态的汇总,执行失败的测试步骤的预期结果与实际

结果,还有整体运行状况和运行时间的汇总。

通过与unittest类似的xUnite测试框架创建的测试被拆分为3部分,即3A’s,具体如下。● Arrange:是用来初始化测试的前置条件,包含初始化被测试的

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载