Selenium自动化测试工具使用方法汇总

一、Selenium自动化测试简介

在软件开发中,自动化测试已经成为了不可或缺的一部分。Selenium从2004年开始就被开发出来,一直是自动化测试领域最常用的工具之一,它可以被用来自动化测试Web应用程序的功能和用户界面。Selenium允许您通过编写测试脚本来模拟用户在网站上的行为,同时也可以执行一些高级操作,例如截图、模拟用户在多个浏览器上的操作,并且可以集成到不同的集成开发环境(IDE)中,例如Eclipse、Visual Studio等等。

二、Selenium的安装与配置

2.1 安装Selenium

安装Selenium非常简单,在Python中,只需要在命令行中使用以下命令进行安装:

pip install selenium

如果以上命令不能正常运行,可以尝试加上 --user 或 sudo,类似如下所示:

pip install selenium --user

在安装过程中,您还需要安装适合您的浏览器的驱动程序,例如,如果您使用的是Chrome浏览器,则需要下载ChromeDriver,Firefox浏览器需要下载GeckoDriver,Safari浏览器需要下载SafariDriver,Edge浏览器需要下载EdgeDriver。下载链接也可以从Selenium官方网站上找到。

2.2 配置环境变量

为了让系统能够找到我们安装的浏览器驱动程序,需要将它所在的目录添加到环境变量中。目录添加到环境变量的方法因操作系统而异,以下是Windows和Mac OS X系统中添加环境变量的方法:

Windows系统:

在桌面上右键点击“计算机”,选择“属性”。

在弹出的窗口中,选择“高级系统设置”。

在“系统属性”窗口中,选择“环境变量”。

在“环境变量”窗口中,找到“Path”下面的编辑按钮,点击进去。

在“编辑环境变量”窗口中,点击“新建”,并输入Selenium驱动程序所在的目录路径。

Mac OS X系统:

打开Terminal(位于/Applications/Utilities/Terminal.app)。

输入以下命令:

sudo nano /etc/paths

在编辑的文本框中,将Selenium驱动程序所在的目录路径添加到文件的最后一行中。每个路径应该独占一行。

输入Ctrl-O和回车键,保存文件。

输入Ctrl-X,退出编辑器。

三、Selenium自动化测试脚本编写过程

3.1 初始化WebDriver对象

要开始测试网站,需要使用WebDriver对象进行自动化测试。初始化WebDriver对象的代码如下:

from selenium import webdriver

browser = webdriver.Chrome()

在这个例子中,我们使用Chrome浏览器,并使用ChromeDriver进行测试。启动浏览器后,Selenium会自动打开一个新窗口。

3.2 访问网站

要访问一个网站,可以使用WebDriver对象的get()方法。这个方法需要一个URL作为参数,示例代码如下:

browser.get("https://www.baidu.com")

在这个例子中,我们访问了百度搜索引擎首页。当运行上述代码时,Selenium自动使用Chrome浏览器打开了百度网站。

3.3 查找元素

在进行Web自动化测试时,需要与页面上的元素进行交互。使用Selenium,可以通过XPath、CSS选择器、元素名称和标签等方式查找元素。以下代码展示了如何使用XPath表达式查找元素:

element = browser.find_element_by_xpath("//input[@name='q']")

在这个例子中,我们使用XPath表达式查找了百度搜索框,并将其存储在了一个变量中。元素可以通过它们的名称、类、ID等属性进行查找。如果找到了多个符合要求的元素,则可以使用find_elements_by_*()方法进行查找。例如,“find_elements_by_xpath()”方法将在文档中查找所有与XPath表达式匹配的元素。

3.4 文本输入和点击操作

找到元素后,我们可以将输入文本发送到文本输入框中,并通过单击元素来执行任何链接或按钮。以下代码演示了如何在百度搜索框中输入文本并单击搜索按钮:

element.send_keys("Selenium自动化测试")

element.submit()

在代码中,我们发送了" Selenium自动化测试 "这个字符串到名为 " q " 的搜索框中,并使用 submit() 方法模拟单击百度搜索按钮。

3.5 执行JavaScript代码

如果需要在测试中执行自定义的JavaScript代码,Selenium提供了execute_script()方法。例如,以下JavaScript代码将向上滚动到页面顶部:

browser.execute_script("window.scrollTo(0, 0);")

在这个例子中,我们使用了 JavaScript 的 window.scrollTo(x,y) 函数来执行页面滚动操作。

3.6 关闭浏览器

测试完成后,需要关闭浏览器,释放资源。要关闭浏览器,请使用close()方法,如下所示:

browser.close()

在这个例子中,我们使用了close()方法来关闭测试所使用的浏览器窗口。

四、Selenium高级自动化测试技巧

4.1 等待页面元素加载

在某些情况下,由于网络问题或HTML文档结构的变化,页面不总是能够立即加载所有元素。这种情况下,可以使用Selenium的“隐式等待”功能进行等待。以下代码演示如何等待页面加载元素:

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(browser, 10).until(

EC.presence_of_element_located((By.XPATH, "//input[@name='q']"))

)

在这个例子中,我们使用了三个Selenium类:'By'类表示一种元素定位方式,'WebDriverWait'类表示一个等待类,'expected_conditions'类来表示条件。在创建了webdriver对象后,我们将等待对象与webdriver对象一起使用,并使用 'presence_of_element_located' 来指定我们要等待的元素。如果在10秒内找不到指定元素,则抛出异常。

4.2 切换窗口和IFrame

Selenium可以操作由JavaScript打开的窗口。以下代码演示了如何使用Switch_to()方法在主窗口和新窗口之间切换:

# 获取主窗口句柄

main_window = browser.current_window_handle

# 打开新窗口

new_window_element = browser.find_element_by_link_text("new window")

new_window_element.click()

# 等待新窗口打开

WebDriverWait(browser, timeout=30).until(

lambda x: len(browser.window_handles) > 1)

# 切换到新窗口

for handle in browser.window_handles:

if handle != main_window:

browser.switch_to.window(handle)

break

# 在新窗口中执行操作

# 切换回主窗口

browser.switch_to.window(main_window)

在这个例子中,我们在新窗口中打开并执行了一些操作,然后又切换回到原来的主窗口。另外,当我们需要在一个框架内执行操作时,需要使用switch_to.frame()方法。以下代码演示如何切换到一个IFrame并进行操作:

iframeElement = browser.find_element_by_xpath("//iframe[@class='x-iframe']")

browser.switch_to.frame(iframeElement)

在这个例子中,我们找到了IFrame元素,然后使用switch_to.frame()方法切换到该IFrame中。此时,我们可以在IFrame中执行各种操作。

4.3 键盘和鼠标操作

Selenium中,还可以使用模拟键盘和鼠标操作,例如Ctrl+C、Ctrl+V、鼠标左键单击、右击等操作。以下代码演示如何使用Selenium模拟单击操作:

from selenium.webdriver import ActionChains

action = ActionChains(browser)

element = browser.find_element_by_xpath("//button[@id='button']")

action.click(element).perform()

在这个例子中,我们使用了ActionChains类来执行单击操作。首先,创建了一个“action”对象,然后通过传递要单击的元素实例化了这个对象。最后,执行了单击操作。

4.4 截图

在自动化测试过程中,有时需要获取屏幕截图来记录测试结果或分析错误。Selenium提供了截图功能。以下代码演示如何使用Selenium进行屏幕截图操作:

browser.save_screenshot("screenshot.png")

在这个例子中,我们使用save_screenshot()方法捕获屏幕截图,并将其保存到名称为"screenshot.png"的文件中。

五、总结

本文总结了Selenium的简介、安装和配置方法和自动化测试脚本编写过程,同时介绍了Selenium的高级自动化测试技术,包括等待页面元素加载、切换窗口和IFrame、键盘和鼠标操作以及截图等内容。Selenium作为自动化测试领域中的一种工具,能够模拟用户在网站上的操作,测试Web应用程序的功能和用户界面。掌握Selenium的基本操作和高级技术可以更方便地对Web应用程序进行测试,并提高测试效率。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签