分类
文章

用于Web自动化测试的Selenium Webdriver Python教程

Selenium WebDriver是用于Web UI自动化的最受欢迎的工具之一。而且,没有什么比Python能够补充它来自动化广泛的Web应用程序更好的了。因此,我们带来了此Selenium Webdriver Python教程,以使您快速完成任务。因此,让我们从了解UI自动化测试中需要做的一切开始。

Web UI自动化意味着自动执行在Web浏览器窗口中执行的操作,例如导航到网站,填写包括处理文本框,单选按钮和下拉菜单的表单,提交表单,浏览网页,处理弹出窗口等等。Selenium WebDriver是可以自动化所有这些任务的工具。它可以与迄今为止可用的所有类型的Web浏览器进行交互,例如Firefox,Internet Explorer,Safari和Chrome等。

大多数时候,我们使用Java和Eclipse创建Selenium Webdriver项目。在本文中,我们将使用Python代替Java,并演示Selenium Webdriver Python集成如何实现Web UI自动化。

Selenium是一个开放源代码,它的库可以使用不同的编程语言来执行Web UI自动化测试,而Python是其中之一。

适用于Python的Selenium WebDriver客户端库使我们能够利用Selenium WebDriver可用的所有功能,并与Selenium Standalone Server交互以执行基于浏览器的应用程序的自动化测试(远程和分布式测试)。

您可能需要了解推动Selenium WebDriver Python库开发的团队及其成员,他们是Miki Tebeka,Adam Goucher,Eric Allenin,David Burns,Luke Semerau,Jason Huggins和MaikRoder。

Selenium Webdriver库与一系列Python版本兼容,其中包括Python 2.6、2.7和3.2-3.5。

现在,让我们学习有关设置Selenium Webdriver Python环境的所有细节,并使用Python编写我们的第一个Selenium测试脚本。

用于Web自动化的Selenium Webdriver Python安装程序

安装Python

在Linux发行版,MAC OS X和Unix计算机上;默认情况下安装Python。

但是,在Windows计算机上,需要单独安装。以下链接提供了适用于不同操作系统的Python安装程序:

下载Python安装程序

在本教程中,我们下载了最新版本的Python(3.5.1),并将其用于本教程不同部分中给出的示例。您可以使用下面给出的直接链接来安装Python 3.5.1。

下载Python(3.5.1)

运行Python安装程序后,它还会安装<pip>工具,它是Python的软件包管理器。它简化了Selenium Webdriver之类的高级软件包的安装。

安装Selenium Webdriver Python软件包

有两种使用Python设置Selenium Webdriver的独特方法。

A-使用PIP软件包管理器通过Python安装Selenium

1-首先转到安装Python的目录。

例如,我们拥有最新的Python版本3.5.1,其位置在<C: python python35>文件夹中。

2-使用<pip>工具安装Selenium Webdriver软件包。


C:pythonpython35>pip install selenium
Collecting selenium
  Downloading selenium-2.53.0.tar.gz (815kB)
←[K    100% |################################| 819kB 108kB/s ta 0:00:01
Installing collected packages: selenium
  Running setup.py install for selenium
Successfully installed selenium-2.53.0
←[33mYou are using pip version 7.1.2, however, version 8.1.0 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

如果要升级当前安装的Selenium Webdriver软件包,只需将-U标志添加到前面的<pip>命令中。由于我们已经拥有Selenium Webdriver库的最新版本,因此upgrade命令将返回状态为最新。


C:pythonpython35>pip install -U selenium
Requirement already up-to-date: selenium in c:pythonpython35libsite-packages
←[33mYou are using pip version 7.1.2, however, version 8.1.0 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

在使用Python安装Selenium的所有方法中,这种方法是最安全的。上面的命令将在系统上设置Selenium WebDriver库,该库包含使用Python创建自动化测试脚本所需的所有模块和类。

<pip>工具将下载最新版本的Selenium软件包并将其安装在您的计算机上。

可选的–U标志会将安装的软件包的现有版本升级到最新版本。

Selenium Webdriver Python软件包安装

B-从源代码构建Selenium Jar并使用Python安装

1-从下面的链接下载Selenium源代码包。将源提取到文件夹<selenium-2.53.1>中,然后执行下一步。

下载Selenium-2.53.1.tar.gz

2-现在使用cmd.exe启动命令提示符,并运行以下命令以使用Python安装Selenium:


C:pythonpython35>cd selenium-2.53.1
C:pythonpython35selenium-2.53.1>python setup.py install
选择Python编辑器(IDE)

设置Python和Selenium WebDriver之后,下一个重要步骤是选择编辑器或IDE(集成开发环境)来编写测试脚本。优秀的编辑器或IDE使其功能易于编码。IDE更加强大,并具有一些出色的功能,例如:

  • 具有代码完成功能的图形代码编辑器。
  • 语法突出显示。
  • 函数和类的代码浏览器。
  • 管理项目结构。
  • 报告和日志记录工具。
  • 调试和单元测试工具。

Vim,Nano或Notepad等文本编辑器可用于编写Python测试脚本。

但是,IDE在大型项目上工作更方便,因此在这里,我们简要概述了一些著名的项目:

流行的Python IDE开发

a)PyCharm:它支持Windows,Linux和Mac操作系统。PyCharm有两个版本-社区版和专业版。您可以随时免费使用其社区版。它具有专业版,具有更多高级功能,但您必须购买。

因此,社区版适用于创建和运行Selenium测试脚本。它具有出色的调试功能。要探索有关PyCharm及其功能的更多信息,请访问以下链接:

http://www.jetbrains.com/pycharm/

b)PyDev Eclipse插件:PyDev是Eclipse的Python IDE。可以使用以下更新站点通过Eclipse更新管理器将PyDev作为插件安装:http://pydev.org/updates

您可以在以下位置查看详细的安装说明:

http://www.vogella.com/tutorials/Python/article.html

c)PyScripter:PyScripter是免费的Windows开源Python IDE。它与Linux不兼容。它提供了现代IDE提供的功能的广泛组合,例如IntelliSense和代码完成,测试和调试支持。以下链接提供了有关PyScripter及其下载信息的更多详细信息:

https://code.google.com/p/pyscripter/

这样,我们就可以使用Selenium和Python创建并运行我们的测试脚本了。

使用Python准备您的第一个Selenium Webdriver Automation脚本

让我们从Selenium WebDriver开始,创建一个使用Selenium类和函数自动执行浏览器交互的Python脚本。

在这里,我们将向您展示一个示例脚本,该脚本打开”www.google.com”,并在Google搜索文本框中输入搜索文本。然后,测试脚本验证在其上显示了搜索文本的Google搜索页面。

Firefox的Selenium Webdriver Python脚本


from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# create a new Firefox session
driver = webdriver.Firefox()
driver.implicitly_wait(30)
driver.maximize_window()

# Navigate to the application home page
driver.get("http://www.google.com")

# get the search textbox
search_field = driver.find_element_by_id("lst-ib")
search_field.clear()

# enter search keyword and submit
search_field.send_keys("Selenium WebDriver Interview questions")
search_field.submit()

# get the list of elements which are displayed after the search
# currently on result page using find_elements_by_class_name method
lists= driver.find_elements_by_class_name("_Rm")

# get the number of elements found
print ("Found " + str(len(lists)) + " searches:")

# iterate through each element and print the text that is
# name of the search

i=0
for listitem in lists:
   print (listitem.get_attribute("innerHTML"))
   i=i+1
   if(i>10):
      break

# close the browser window
driver.quit()

解码以上脚本

让我们逐行讨论脚本,以简要了解Selenium WebDriver语句。在即将发布的帖子中,将有更多关于不同Selenium WebDriver功能的信息。

第一步。

selenium webdriver模块实现了支持不同浏览器(包括Firefox,Chrome,Internet Explorer,Safari,其他浏览器和RemoteWebDriver)的类,从而可以在远程计算机上可用的浏览器上进行测试。

我们需要从Selenium包中导入webdriver才能使用Selenium WebDriver方法,如下所示:

从Selenium导入webdriver

第二步。

接下来,我们需要用来加载网页的浏览器对象。浏览器对象提供了一个可编程接口,可以使用Selenium命令与浏览器进行通信。在测试脚本中,我们使用的是Firefox。我们可以创建Firefox的实例,如以下代码所示:

驱动程序= webdriver。火狐浏览器

执行此语句后,将启动一个新的Firefox窗口。我们对驱动程序实例进行了以下设置:

driver.implicitly_wait(30)
driver.maximize_window()

我们为Selenium配置了一个超时,以在30秒内启动浏览器。next语句使浏览器窗口最大化。

第三步

接下来,我们将导航到该应用程序,在本例中为”http://www.google.com “,将给定的URL传递给driver.get()方法。调用get()方法后,Webdriver等待直到页面在浏览器窗口中呈现,然后将控件发送回脚本。

页面加载后,Selenium将与页面上的各种元素进行交互。接下来,在测试脚本中,我们将研究不同的Selenium WebDriver函数,这些函数搜索HTML对象,将文本发送到Web组件,模拟按键事件,单击按钮并从下拉菜单中进行选择,等等。让我们看看所有这些函数用于下一步。

第四步。

*首先,我们将找到Google搜索文本框,以提供搜索的文本输入。”搜索”文本框的id属性为<lst-ib>,您可以从下面给出的代码中进行识别:

search_field = driver.find_element_by_id(<lst-ib>)

*找到”搜索”文本框后,我们尝试通过使用clear()方法清除之前的值,然后使用send_keys()方法提供新值来与textbox元素进行交互。随后调用commit()方法将转发搜索请求进行处理。您可以在接下来的几行中快速预览这些步骤。

search_field.clear()
search_field.send_keys(“Selenium WebDriver面试问题”)
search_field.submit()

*提交搜索请求后,Firefox驱动程序将显示Google返回的结果页面。结果页面显示与搜索到的文本匹配的条目列表。列表中的每个条目都在锚点<a>元素中捕获,可以使用”find_elements_by_class_name”方法进行访问。如果使用,它将返回以下元素的列表:

列表= driver.find_elements_by_class_name(“_ Rm”)

*项目列表扩展到许多页面,因此我们将代码限制为打印锚标记中捕获的前十个条目。我们使用锚点<a>元素的”innerHTML”属性输出条目的名称:


i=0
for listitem in lists:
   print (listitem.get_attribute("innerHTML"))
   i=i+1
   if(i>10):
      break

该示例使我们真正了解了如何结合使用Selenium WebDriver和Python创建简单的测试自动化脚本。这是一个非常基本的示例脚本。在即将发布的文章中,我们将在Python中使用Selenium Library的其他有趣且复杂的功能。

为Internet Explorer和Google Chrome创建Selenium Webdriver Python脚本

Selenium支持跨浏览器测试,这意味着我们可以自动化其他浏览器,例如Internet Explorer,Google Chrome,Safari和PhantomJS等无头浏览器。

在本节中,我们将重用先前为Internet Explorer和Google Chrome创建的测试脚本,以验证Selenium WebDriver的跨浏览器功能。

设置Internet Explorer(IE)

要在Internet Explorer中运行Selenium测试脚本,首先需要下载并设置InternetExplorerDriver服务器。该驱动程序是一个独立的服务器可执行文件,可强制执行WebDriver的有线协议以充当测试脚本和Internet Explorer浏览器之间的链接。

它支持Windows XP,Vista,Windows 7和Windows 8操作系统上的大多数IE版本。

以下是设置InternetExplorerDriver服务器的步骤:

一世。从提到的链接http://www.seleniumhq.org/download/下载InternetExplorerDriver服务器。 32位和64位版本均可下载。我们必须根据我们的系统配置进行选择。

ii。解压缩下载的InternetExplorerDriver服务器并将文件复制到测试脚本所在的目录。

iii。接下来,您需要检查保护模式设置(在IE 7或更高版本中)。每个安全区域的值必须相同。只要所有区域都相同,就可以保持打开或关闭状态。以下是在IE中修改保护模式设置的步骤:

一种。 从工具菜单中选择Internet选项。

b。 在”Internet选项”对话框中,单击”安全性”选项卡。

C。 选择”选择一个区域以查看或更改安全设置 “中列出的每个区域,并确保所有区域的”启用保护模式 “(可能需要重新启动浏览器)处于打开状态或关闭状态。建议所有区域都具有如下图所示的类似设置:

Selenium Webdriver Python IE设置

iv。最后,对测试脚本进行以下修改以在Internet Explorer浏览器上打开网站:

IE的Selenium Webdriver Python脚本

import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# get the path of IEDriverServer
dir = os.path.dirname(__file__)
ie_driver_path = dir + "IEDriverServer.exe"

# create a new Internet Explorer session
driver = webdriver.Ie(ie_driver_path)
driver.implicitly_wait(30)
driver.maximize_window()

# Navigate to the application home page
driver.get("http://www.google.com")

# get the search textbox
search_field = driver.find_element_by_name("q")

# enter search keyword and submit
search_field.send_keys("Selenium WebDriver Interview questions")
search_field.submit()

# get the list of elements which are displayed after the search
# currently on result page using find_elements_by_class_name method
lists= driver.find_elements_by_class_name("r")

# get the number of elements found
print ("Found " + str(len(lists)) + " searches:")

# iterate through each element and print the text that is
# name of the search

i=0
for listitem in lists:
   print (listitem.get_attribute("innerHTML"))
   i=i+1
   if(i>10):
      break

# close the browser window
driver.quit()

为Internet Explorer创建的测试脚本中的执行步骤与我们为Firefox所做的非常相似。

这里要注意的重要一点是,定位器可能会在不同的浏览器上发生更改,因此在用于Selenium Test Automation的测试脚本中使用之前,请始终对其进行验证。

设置谷歌浏览器(Chrome)

上面的Selenium测试自动化脚本也可以在Google Chrome上运行,而无需进行太多修改。

您需要下载类似于InternetExplorerDriverChromeDriver服务器库。ChromeDriver服务器是一台独立的服务器,它实现了WebDriver的有线协议来自动化Google Chrome。

该Selenium驱动程序与Windows,Linux和OS X操作系统兼容。您可以按照以下步骤下载ChromeDriver服务器:

一世。 从http://chromedriver.storage.googleapis.com/index.html获取最新的ChromeDriver库。

ii。 解压缩下载的ChromeDriver,并将文件复制到测试脚本所在的目录。

iii。 最后,对用于在Chrome浏览器中打开网站的测试脚本进行以下修改:

适用于Chrome的Selenium Webdriver Python脚本

import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# get the path of ChromeDriverServer
dir = os.path.dirname(__file__)
chrome_driver_path = dir + "chromedriver.exe"

# create a new Chrome session
driver = webdriver.Chrome(chrome_driver_path)
driver.implicitly_wait(30)
driver.maximize_window()

# Navigate to the application home page
driver.get("http://www.google.com")

# get the search textbox
search_field = driver.find_element_by_name("q")

# enter search keyword and submit
search_field.send_keys("Selenium WebDriver Interview questions")
search_field.submit()

# get the list of elements which are displayed after the search
# currently on result page using find_elements_by_class_name method
lists= driver.find_elements_by_class_name("r")

# get the number of elements found
print ("Found " + str(len(lists)) + " searches:")

# iterate through each element and print the text that is
# name of the search

i=0
for listitem in lists:
   print (listitem.get_attribute("innerHTML"))
   i=i+1
   if(i>10):
      break

# close the browser window
driver.quit()

执行上述测试脚本后,Selenium将首先启动Chromedriver服务器,该服务器将启动Chrome浏览器并执行以下步骤。该执行过程与您在Firefox和Internet Explorer上方看到的执行过程非常相似。

摘要– Selenium Webdriver Python教程

我们试图使本Selenium Webdriver Python教程尽可能直观。我们添加的多个示例可以帮助您快速了解使用Python使用Selenium的过程。

但是,如果您想进入下一个级别并希望在Selenium Python中创建一个测试自动化套件,请遵循以下教程。

+ 分步教程构建Selenium Python测试套件

请写信给我们介绍Selenium Webdriver Python教程并分享您的观点。另外,请在社交媒体上分享此帖子,请使用帖子下方的分享图标。

继续学习并继续练习以获得更好的结果。

-技术光束

发表评论

电子邮件地址不会被公开。 必填项已用*标注