📜  Selenium WebDriver与Python教程

📅  最后修改于: 2020-11-06 04:59:09             🧑  作者: Mango

Selenium与Python教程

在本教程中,我们将学习如何使用Python编程语言运行Selenium测试脚本。

在继续本教程之前,首先,我们将了解一些要点,这些要点将帮助我们在Python实现测试脚本。

  • 什么是selenium?
  • 为什么我们使用Selenium进行自动化测试?
  • 什么是Python?
  • 为什么Python对自动化测试有用?
  • selenium与Python
  • 使用Python配置Selenium
  • 在Eclipse中配置PyDev

什么是selenium?

Selenium是一种开源测试工具,这意味着它可以从互联网上下载而无需花任何钱。selenium是一种功能测试工具,也与非功能测试工具兼容。

有关Selenium的更多信息,请参见以下链接:https://www.javatpoint.com/selenium-tutorial

为什么我们使用Selenium进行自动化测试?

Selenium是最受欢迎的自动化测试工具之一。在这里,自动化测试是使用诸如Selenium之类的自动化工具将任何手动测试用例转换为测试脚本的过程。

以下是我们偏爱Selenium进行自动化测试的一些方面:

  • Selenium测试脚本可以用Java, Python,C#,Ruby,Perl等任何编程语言编写。
  • Selenium测试脚本可以在许多操作系统平台上执行,例如Windows,Mac,Linux等。
  • 而且测试脚本可以在不同的浏览器上实现,例如Google Chrome,Mozilla Firefox,Internet ExplorerSafari等。
  • Selenium测试工具可以与其他测试工具(例如TestNG,Junit)关联以管理测试用例并生成测试报告。
  • 为了实现连续测试,Selenium与Maven,Jenkins和Docker测试工具集成在一起。

什么是Python?

  • Python支持面向对象编程方法来建立应用程序。它简单易学,并提供了许多高级数据结构。它是一种开源语言。
  • 这是一种高级解释器脚本编程语言。
  • Python使开发和调试快速进行,因为Python开发中不包含编译步骤。

有关Python语言的更多详细信息,请参见以下链接:https://www.javatpoint.com/Python-tutorial

为什么Python对自动化测试有用?

  • Python对于自动化测试非常有用,因为它支持多种编程模式。
  • Python具有许多内置的测试框架,例如Pytest和Robot ,涵盖了调试和更快的工作流程。
  • 它是一种解释语言,意味着解释器一次可以逐行实现代码,从而使调试变得容易。
  • Python是跨平台语言;这就是为什么它可以在Windows,Linux,UNIX和Macintosh等不同平台上运行的原因
  • 可以使用其他编程语言(例如C,C++,JAVA等)轻松实现Python 。

selenium与Python

有两种方法可以借助Python运行Selenium测试脚本:

  • 使用Python配置Selenium
  • 在Eclipse中配置PyDev。

让我们看看如何借助Python编程语言配置Selenium:

使用Python配置Selenium

使用Python配置Selenium的步骤如下:

  • 在Windows上下载并安装Python
  • 在Python安装Selenium库
  • 下载并安装PyCharm
  • 创建一个新项目并编写Selenium测试脚本
  • 运行并验证测试脚本。

下载并安装适用于Windows的Python

在本节中,我们将看到如何下载和安装Python for Windows平台。

下载Python

要下载适用于Windows平台的最新版本的Python ,请参考以下链接:https:// www。 Python.org / downloads /

  • 单击上面的链接后,将显示最新的Release版本列表,我们单击了Python 3.8.1版本,如下面的屏幕截图所示:

  • 屏幕上将显示Python-3.8.1版本窗口,然后滚动页面一点并找到File部分,然后单击Windows操作系统Windows x86-64基于Web的安装程序链接,如我们所见在以下屏幕截图中:

安装Python

下载适用于Windows-64位的Python之后,我们就可以安装Python了。

要安装Python,请执行以下过程:

  • 双击下载的可执行文件后,将在屏幕上显示Python 3.8.1(64位)设置窗口,其中有两个选项可用于安装Python:
    • 现在安装
    • 定制安装
  • 我们将单击Customize安装,然后选择Add Python 3.8 to path复选框,如下图所示:

  • 之后,单击自定义安装,“可选功能”将出现在屏幕上,我们可以根据需要选择和取消选择功能。
  • 然后,单击下一步按钮,继续进行操作,如下图所示:

  • 一次,我们单击下一步按钮。我们有可用的高级选项列表,我们可以在其中根据需要选择选项,并确保已选择“为所有用户安装”
  • 我们还可以根据需要通过单击“浏览”自定义安装位置。
  • 之后,单击“安装”按钮,以安装Python,如下面的屏幕截图所示:

  • 单击“安装”按钮后,安装过程即开始,如下面的屏幕截图所示:

  • 安装完成后,我们将收到确认消息,提示安装成功,这意味着Windows操作系统已成功安装Python 。
  • 然后,单击“关闭”按钮,关闭设置窗口,如下面的屏幕截图所示:

之后,我们将检查Python是否已成功安装并且工作正常。

因此,为此,我们将打开命令提示符,并将命令键入为Python并按Enter键,这将打开Python解释器外壳,我们可以在其中实现Python程序,如下图所示:

在Python安装Selenium库

在我们的操作系统中成功安装Python之后,我们将安装Selenium库。

为此,我们将在命令提示符下执行以下命令:

Python -m pip install -U Selenium

并且,此命令将成功安装最新的Selenium软件包,即,将Selenium -3.141.0添加到库中,如下图所示:

执行完上述命令后,它将自动创建具有所有Selenium库的Selenium文件夹,如下面的屏幕截图所示:

下载并安装PyCharm

一旦我们将Selenium库成功安装到Python,就可以下载PyCharm的Python IDE。

要下载PyCharm,请执行以下过程:

  • 之后,双击可执行文件以安装PyCharm,然后PyCharm Community Edition安装程序窗口将出现在屏幕上,单击下一步按钮以继续进行操作,如下图所示:

  • 在下一步中,我们可以通过单击浏览器按钮选择安装位置,然后单击下一步按钮以进行进一步处理。

  • 在下一步中,我们提供了一些安装选项,我们可以根据需要选择它们。
  • 之后,单击“下一步”按钮,如下图所示:

  • 然后,单击“安装”按钮以安装PyCharm,如下面的屏幕截图所示:

  • 如下图所示,安装过程正在开始。

  • 然后,单击“完成”按钮以完成安装过程,如下图所示:

创建一个新项目并编写Selenium测试脚本

成功安装PyCharm之后,我们将打开PyCharm IDE以创建新项目。

在PyCharm中创建一个新项目

请按照以下过程在PyCharm中创建一个新项目:

  • 首先,双击打开PyCharm,然后单击Create New Project ,如下图所示:

  • 之后,我们将提供项目名称为SeleniumTest ,然后单击Create按钮,如下图所示:

  • 单击创建按钮后,我们将显示以下窗口:

添加selenium测试脚本

要在PyCharm中添加Selenium测试脚本,请遵循以下过程:

  • 右键单击SeleniumTest项目,然后转到“新建”,我们可以根据需要在给定列表中添加任何选项。
  • 但是,我们在这里添加了Python文件,为此,我们将添加目录,该目录可帮助我们单独管理它们,如下面的屏幕快照所示:

  • 并且,提供目录名称,在本例中,我们将其命名为Demo
  • 之后,按Enter键,如下面的屏幕截图所示:

  • 创建目录后,我们将在Demo Directory上单击鼠标右键,然后转到New ,然后从弹出菜单中选择Python File ,如下图所示: Demo→New→ Python File

  • 并且,我们为Python文件提供了一个名称Sample1
  • 然后,按Enter键,如下图所示:

  • 之后,我们获得了IDE,可以在其中创建或编写Selenium测试脚本。

编写Selenium测试脚本

为了进行测试,我们将首先转到Google主页,然后从那里搜索javatpoint。

我们正在逐步创建示例测试脚本,以使您全面了解如何用Python编程语言编写Selenium测试脚本。

为此,请按照以下步骤操作:

Steps Actions Input Expected Result
1. Import WebDriver from selenium. The WebDriver should be imported.
2. Open the Google Chrome browser. The Google Chrome browser should be opened.
3. Maximize the browser window. The browser window should be maximized.
4. Navigate to the Google home page. https://www.google.com/ The Google home page must be displayed.
5. Identify the Google search text box and pass the value. javatpoint The value should be entered in the search text box.
6. Click on the Google search button. The Google search button should be clicked.
7. Close the Browser. The Browser should be closed.

步骤1

第一步,我们将键入以下语句以导入Web驱动程序:

from selenium import webdriver

第2步

之后,我们将打开Google Chrome浏览器。

如下面的屏幕快照所示,我们提供了多种类型的浏览器选项,并且可以从列表中选择任何浏览器,例如Chrome,Edge,firefox,Internet Explorer,Opera,safari等。

以下是打开Google Chrome浏览器的示例代码:

driver = webdriver.Chrome()

第三步

下一步,我们将最大化浏览器窗口的大小,示例代码如下:

driver.maximize_window()

第四步

然后,我们将导航到给定的URL。

示例代码如下:

driver.get("https://www.google.com/")

注意:我们知道Python是一种非常容易编写代码的语言,因为我们不必像编写Java那样编写多个语句。或者,如果要注释掉某些内容,我们只需在语句中添加一个井号[#],或者我们可以直接从键盘上按Ctrl +正斜杠[/]。

步骤5

在此步骤中,我们试图借助其“名称”属性值找到Google搜索文本框。

  • 右键单击Google搜索文本框,然后在弹出菜单中选择“检查”选项,如下图所示:

  • 将启动开发人员工具窗口,其中包含开发Google搜索文本框时使用的所有特定代码。
  • 然后,复制其Name属性的值,即“ q ”,如下图所示:

这里是示例代码:

driver.find_element_by_name("q").send_keys("javatpoint")

步骤6

一旦我们确定了Google搜索文本框,便确定了Google搜索按钮。

因此,请遵循以下过程:

  • 右键单击Google搜索按钮,然后从给定的弹出菜单中选择“检查”选项,如下图所示:

  • 将启动开发人员工具窗口,其中包含在开发Google搜索按钮时使用的所有特定代码。
  • 然后,复制其名称属性的值“ btnK ”,如下图所示:

并且,示例代码如下:

driver.find_element_by_name("btnK").send_keys(Keys.ENTER)

步骤7

在最后一步,我们将关闭浏览器。

并且,用于关闭浏览器的示例代码如下:

driver.close()

完成上述所有步骤后,我们的最终测试脚本将如下所示:

from Selenium import webdriver
import time
from Selenium.webdriver.common.keys import Keys
print("sample test case started")
driver = webdriver.Chrome()
#driver=webdriver.firefox()
#driver=webdriver.ie()
#maximize the window size
driver.maximize_window()
#navigate to the url
driver.get("https://www.google.com/")
#identify the Google search text box and enter the value
driver.find_element_by_name("q").send_keys("javatpoint")
time.sleep(3)
#click on the Google search button
driver.find_element_by_name("btnK").send_keys(Keys.ENTER)
time.sleep(3)
#close the browser
driver.close()
print("sample test case successfully completed")

注意:导入时间:时间是一个Python模块,用于处理与时间有关的任务,例如time.sleep()。

从Selenium.webdriver.common.keys导入密钥:

在这里,我们从Selenium中添加了Keys库,就像上面的代码一样,我们使用Enter键而不是click()方法来执行特定的场景。

运行并验证测试脚本

编写完Selenium测试脚本后,我们将运行测试脚本。

在这里,我们将以两种方式运行测试脚本:

  • 在Python IDE中运行
  • 在命令提示符下运行

在Python IDE中运行

因此,首先,我们将了解如何在Python IDE中运行Selenium测试脚本。

  • 右键单击代码,然后从弹出菜单中选择Run’Sample1′ ,如下图所示:

  • 当我们运行此脚本时,它将产生异常,因为我们没有下图所示的Chrome驱动程序可执行文件:

为克服此异常,我们将从以下链接下载chrome驱动程序可执行文件:https://chromedriver.storage.googleapis.com/index.html?path=79.0.3945.36/

  • 单击上面的链接后,我们将根据我们的操作系统平台单击zip文件。就像我们拥有Windows平台一样,这就是为什么我们单击zip下载可执行文件的原因,如下面的屏幕截图所示:

  • 下载exe文件后,我们可以将此文件粘贴到Python文件夹中并解压缩。
  • 然后,我们将在Python IDE中再创建一个称为库的文件夹作为Browsers
  • 右键单击项目(SeleniumTest)→新建→目录,如下面的屏幕快照所示:

  • 并且,我们将所有驱动程序的可执行文件手动添加到Browsers文件夹中。
  • 为此,我们将复制Python文件夹中chrome驱动程序exe文件,并粘贴到Browser文件夹中,如下图所示:
  • 现在转到PyCharm IDE,复制chromdriver.exe文件的绝对路径,如下面的屏幕快照所示:

  • 将语句“ driver = webdriver.Chrome()”替换为以下给出的语句:
driver=webdriver.Chrome(r"C:\Users\JTP\PycharmProjects\SeleniumTest\Browsers\chromedriver.exe")

注意:在这里,我们将使用“ r”来克服Unicode错误。

正如我们在下面的屏幕截图中所看到的,如果我们不将r放入代码中,它将生成语法错误。

  • 之后,我们将再次运行sample1 ,它将成功执行代码,如下图所示:

上面的测试脚本将启动Google Chrome浏览器并自动执行所有测试方案。

在命令提示符下运行

要在命令提示符下运行上述测试脚本,请执行以下过程:

  • 复制Sample1.py文件的位置,如下图所示:

  • 并粘贴命令提示符,首先转到特定的文件夹,然后输入以下命令: Python Sample1.py
  • 然后,按Enter键,如我们在下面的屏幕快照中看到的那样,示例测试用例一直处于启动状态
  • 在自动完成所有方案之后,它将作为成功完成示例测试案例显示消息。

在Eclipse中配置PyDev

这是使用Python执行Selenium测试脚本的另一种方法。

在本节中,我们将在Eclipse中安装PyDev,然后在其上实现Selenium测试脚本。

  • 安装PyDev
  • 使用Python执行Selenium测试脚本。

安装PyDev

要在Eclipse中安装PyDev,请执行以下过程:

  • PyDev安装
  • 设定偏好
  • 创建一个新项目
  • 创建一个新包
  • 创建一个PyDev模块

PyDev安装

在开始在Eclipse中安装PyDev之前,请确保我们已经安装了最新版本的Eclipse IDE。

  • 双击Eclipse IDE软件。
  • 然后,转到工具栏中的“帮助” ,然后在给定的弹出菜单中选择“ Eclipse Marketplace”选项,如下面的屏幕快照所示:

  • Eclipse Marketplace窗口将打开,在搜索区域中,我们将键入PyDev并按Enter
  • 然后,单击“安装”按钮,如下面的屏幕截图所示:

  • 一旦我们点击安装按钮;它将开始安装过程,然后单击“确认”按钮以进行进一步的过程,如下面的过程所示:

  • 然后,选择我接受许可协议的条款选项,然后单击完成按钮以完成安装过程,如下图所示:

  • 安装完成后,请重新启动Eclipse IDE,如下图所示:

  • 之后,我们将根据需求设置使用Python项目的首选项。

设置首选项

要设置首选项,请按照以下过程操作:

  • 转到Eclipse Ide工具栏中的Window选项,然后在给定列表中选择Preference选项,如下图所示:

  • 首选项窗口将打开,我们将在其中展开PyDev,然后再次展开解释器,并从给定列表中选择Python解释器。单击“浏览Python/pypy.exe”选项,如下图所示: PyDev→解释器→ Python解释器

  • 一旦我们点击浏览Python的/pypy.exe,我们将提供的Python解释器名称可执行文件的路径。
  • 为此,在“选择解释器”弹出窗口中,单击“浏览”按钮,然后在我们的本地系统中浏览Python的可执行文件路径,然后单击“确定”按钮,如下图所示:

  • 之后,单击全按钮,然后单击确定按钮以选择文件夹,如下面的屏幕截图所示:

  • 然后,单击“应用并关闭”按钮,以完成设置首选项过程,如下面的屏幕截图所示:

  • 成功设置首选项后,我们将在Python创建一个新项目。

创建一个新项目

要创建一个新项目,请按照以下步骤操作:

  • 转到文件菜单,然后转到新建然后在弹出菜单中选择其他选项,如下图所示:文件→新建→其他

  • 一旦选择了其他选项,将打开[新建]窗口,我们将在其中展开PyDev并选择PyDev Project ,然后单击Next按钮,如下图所示:

  • 一旦我们单击下一步按钮;我们将提供项目名称,然后单击完成按钮,如下图所示:

  • 如下图所示, Python项目是在Eclipse中创建的:
  • 完成创建Python项目后,我们将创建一个新的Python包。

创建一个新包

请按照以下过程创建一个新程序包:

  • 右键单击新创建的项目( SeleniumTest ),转到New ,然后在给定的Popup菜单中选择PyDev Package,如下图所示:

  • 然后提供PyDev Package的名称,然后单击Finish按钮,如下图所示:

  • 正如我们在下面的屏幕截图中看到的那样,新软件包已创建。

创建PyDev程序包后,我们将创建一个PyDev模块。

创建一个PyDev模块

要创建PyDev模块,请执行以下过程:

  • 右键单击新创建的Package [Demo],然后转到New从给定列表中选择PyDev Module ,如下面的屏幕截图所示: Demo→New→PyDev Module

  • 然后给PyDev模块名称[Test] ,然后单击Finish按钮,如下面的屏幕截图所示:

  • 之后,我们将从给定列表中选择Empty模板,然后单击OK按钮,如下图所示:

  • 创建Python模型之后,就可以编写和执行Selenium测试脚本了。

编写并执行Selenium测试脚本

编写Selenium测试脚本

为了进行测试,我们将在Gmail应用程序上执行登录测试。

在此测试中,我们将自动执行以下测试方案:

Steps Actions Input Expected Result
1. Import web driver from Selenium. Web driver should be imported.
2. Open the Google Chrome browser. The Google Chrome browser should be opened.
3. Maximize the browser and delete all the cookies The browser should be maximized, and cookies should be deleted.
4. Navigate to the home page Gmail application. https://www.gmail.com The Gmail home page must be displayed.
5. Identify the username text box and pass the value. xyz11@gmail.com The username text box should be identified and value should be entered in the username text box.
6. Click on the Next button. The next button should be clicked.
7. Identify the password text box and pass the value. ####### The password text box should be identified and value should be entered in the Password text box.
8. Click on the Next button. The next button should be clicked.
9. Close the Browser. The Browser should be closed.

请按照以下步骤操作:

步骤1

第一步,我们将在以下语句的帮助下导入Web驱动程序:

from selenium import webdriver

第2步

之后,我们将打开Google Chrome浏览器。

  • 要启动Google Chrome浏览器或任何其他浏览器(例如Firefox等),我们需要从给定的链接下载Chrome驱动程序的可执行文件: https : //sites.google.com/a/chromium.org/ chromedriver /下载
  • 然后,将下载的exe文件粘贴到Python程序包(演示)中,以克服异常,如下面的屏幕截图所示:

示例代码如下:

#open Google Chrome browser
driver = webdriver.Chrome()

第三步

在下一步中,我们最大化并删除浏览器窗口的所有cookie。

这里是示例代码:

#maximize the window size
driver.maximize_window()
#delete the cookies
driver.delete_all_cookies()

第四步

在此步骤中,我们将导航到Gmail应用程序URL。

示例代码如下:

#navigate to the url
driver.get("https://www.gmail.com")

步骤5

导航到Gmail应用程序的URL后,我们将识别用户名文本框并传递其值。

要标识用户名文本框,请按照以下过程操作:

  • 右键单击用户名文本框。
  • 然后在给定的弹出菜单中选择“检查”选项,如下面的屏幕截图所示:

  • 将打开开发者工具窗口,其中包含在用户名文本框开发中使用的所有特定代码。
  • 然后,复制其id属性的值: identifierId ,如下图所示:

  • 并且,这里是示例代码:
#identify the user name text box and enter the value
driver.find_element_by_id("identifierId").send_keys("xyz11@gmail.com")
time.sleep(2)

步骤6

在此步骤中,我们将确定“下一步”按钮,然后单击它。

要确定下一步按钮,请按照以下过程操作:

  • 右键单击下一个按钮,然后在给定的弹出菜单中单击“检查”选项,如下图所示:

  • 将打开开发人员工具窗口,其中包含在Next开发中使用的所有特定代码。
  • 然后,从chropath部分复制其绝对XPath的值: // span [@ class =’RveJvd snByac’] ,如下图所示:

  • 这里是示例代码:
#click on the next button
driver.find_element_by_xpath("//span[@class='RveJvd snByac'][1]").click()
time.sleep(3)

步骤7

在此步骤中,我们将识别密码文本框并传递其值。

要识别密码文本框,请执行以下过程:

  • 右键单击密码文本框,然后从给定的弹出菜单中单击“检查选项”,如下面的屏幕快照所示:

  • 将打开开发人员工具窗口,其中包含在密码文本框的开发中使用的所有特定代码。
  • 并且,复制name属性的值,即密码,如下图所示:

这里是示例代码:

#identify the password text box and enter the value 
driver.find_element_by_name("password").send_keys("########")
time.sleep(3)

步骤8

在此步骤中,我们将确定“下一步”按钮,然后单击它。

要确定下一步按钮,请按照以下过程操作:

  • 右键单击下一个按钮,然后在给定的弹出菜单中单击“检查”选项,如下图所示:

  • 将打开开发人员工具窗口,其中包含在Next开发中使用的所有特定代码。
  • chropath部分复制其绝对XPath的值: // span [contains(text(),’Next’) ] ,如下图所示:

这里是示例代码:

#click on the next button
driver.find_element_by_xpath("//span[contains(text(),'Next')][1]").click()
time.sleep(3)

步骤9

在测试脚本的最后一步,我们将关闭浏览器。

这里是示例代码:

#close the browser
driver.close()

并且,成功编写完所有上述步骤后,我们的最终测试脚本将如下所示。

from Selenium import webdriver
import time
from Selenium.webdriver.common.keys import Keys
print("test case started")
#open Google Chrome browser
driver = webdriver.Chrome()
#maximize the window size
driver.maximize_window()
#delete the cookies
driver.delete_all_cookies()
#navigate to the url
driver.get("https://www.gmail.com")
#identify the user name text box and enter the value
driver.find_element_by_id("identifierId").send_keys("xyz11@gmail.com")
time.sleep(2)
#click on the next button
driver.find_element_by_xpath("//span[@class='RveJvd snByac'][1]").click()
time.sleep(3)
#identify the password text box and enter the value 
driver.find_element_by_name("password").send_keys("#########")
time.sleep(3)
#click on the next button
driver.find_element_by_xpath("//span[contains(text(),'Next')][1]").click()
time.sleep(3)
#close the browser
driver.close()
print("Gmail login has been successfully completed")

注意:在上述代码中,请在以下位置使用您的Gmail ID:xyz11@gmail.com和密码:#########

运行测试脚本

要运行上述测试脚本,我们将右键单击代码,然后选择“运行方式”→“ Python运行”,如下面的屏幕截图所示:

上面的测试脚本将启动Google Chrome浏览器并自动执行所有测试方案。

而且,正如我们在下面的屏幕截图中看到的那样,当我们在控制台屏幕上获得print消息(输出)时,我们的代码正在成功运行。