news 2026/4/23 16:00:36

Selenium(Python web测试工具)基本用法详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Selenium(Python web测试工具)基本用法详解

🍅点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

这篇文章主要介绍了Selenium(Python web测试工具)基本用法,结合实例形式分析了Selenium的基本安装、简单使用方法及相关操作技巧,需要的朋友可以参考下

本文实例讲述了Selenium基本用法。分享给大家供大家参考,具体如下:

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

安装
pip install selenium
安装驱动程序

下面介绍几种主流浏览器的驱动程序下载地址:

下面以windows环境,Chrome浏览器为例,我下载的是2.36版本的驱动chromedriver_win32.zip,解压得到一个chromedriver.exe文件,将其放置在浏览器的安装目录之下,如图所示:

selenium的简单用法

如果你已经按照上面安装了selenium,并且安装了驱动程序,下面来简单的玩一玩selenium:

from selenium.webdriver import Chrome from selenium.webdriver.common.keys import Keys # 创建Chrome WebDriver实例,此路径为驱动程序的路径 driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe") # 加载URL网页 driver.get("http://www.baidu.com/") # 判断标题中是否包含该字符串 assert "百度一下" in driver.title # 查找id=kw的节点 element = driver.find_element_by_id("kw") # 清空原有的输入,输入python进行搜索 element.clear() element.send_keys("python") element.send_keys(Keys.RETURN) # 判断是否有结果返回 assert "No results found." not in driver.page_source # 关闭当前标签,也可以使用quit()关闭浏览器 driver.close()

上面的栗子,简单介绍了一下selenium的用法,接下来将结合selenium与unittest来编写测试:

import unittest from selenium.webdriver import Chrome from selenium.webdriver.common.keys import Keys # 继承至TestCase,表示这是一个测试用例类 class BaiduCase(unittest.TestCase): # 初始化的一部分 def setUp(self): self.driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe") # 测试用例方法,名称可以自定义,方法名称始终以test开头 def test_serch(self): self.driver.get("https://www.baidu.com/") assert "百度一下" in self.driver.title element = self.driver.find_element_by_id("kw") element.clear() element.send_keys("python") element.send_keys(Keys.RETURN) assert "No results found." not in self.driver.page_source # 在执行完各种测试用例方法之后会执行,为一个清理操作 def tearDown(self): self.driver.close() if __name__ == "__main__": unittest.main()

执行上面的代码,将会返回如下信息:

. ---------------------------------------------------------------------- Ran 1 test in 2.914s OK

值得注意的是,如果没有配置驱动,或者路径写错了,将会出现WebDriverException错误

与网页互动

与一个网页进行的真正的交互,具体的说,与网页的HTML元素进行交互。如果需要与之交互,那么久必须要查找到HTML的元素。WebDriver提供了多种查找HTML元素的方法。例如,给定一个元素为:

<input type="text" name="passwd" id="passwd-id"/>

我们可以使用下面任意方法查找到它:

element = driver.find_element_by_id("passwd-id") element = driver.find_element_by_name("passwd") element = driver.find_element_by_xpath("//input[@id='passwd-id']")

值的注意的是,使用xpath进行匹配时,如果有多个元素与查询匹配,只会返回第一个元素。如果什么都找不到,将会返回NoSuchElementException错误。当你查找到一个元素时,你可以用它做什么?首先你可能会想到在文本标签中输入一些文本:

element.send_keys("python")

也可以使用Keys来模拟一些箭头键:

from selenium.webdriver.common.keys import Keys element.send_keys(Keys.ARROW_DOWN)

你也可以使用clear()方法来清除文本标签里的内容:

element.clear()

切换下拉菜单的状态,我们可以依次循环选择每个选项并依次选择每个选项:

element = driver.find_element_by_xpath("//select[@name='name']") all_options = element.find_elements_by_tag_name("option") for option in all_options: option.click()

正如你所看到的,这并不是处理select元素的最有效的方式。WebDriver类包还包括一个名为Select的类,它提供了与这些类交互的有用的方法:

from selenium.webdriver.support.ui import Select element = driver.find_element_by_xpath("//select[@name='name']") select = Select(element) select.select_by_index(index) select.select_by_visible_text("text") select.select_by_value("value")

WebDriver还提供取消选择所有选项的功能:

element = driver.find_element_by_id('id') select = Select(element) select.deselect_all()

Select还具有获取所有已经选中的标签的方法:

element = driver.find_element_by_id('id') select = Select(element) all_options = select.all_selected_options

获取所有可用的选项:

options = select.options

完成后表格填写后,您可以需要提交,一种方法是找到submit按钮并点击它:

driver.find_element_by_id('submit').click()

WebDriver在每个元素上都有一个submit的便利方法,如果你在一个表单的元素上调用它,Webdriver会遍历DOM直到包含表单,然后调用它:

element.submit()

WebDriver还提供了前进与后退的操作:

driver.forward() driver.back()

WebDriver还可以进行设置Cookies和获取Cookies:

driver.get('https://www.baidu.com/') driver.add_cookie({"name":"foo","value":"laozhang"}) print(driver.get_cookies()

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 10:56:04

张雪峰谈2025年网络安全专业是否有前景?

张雪峰谈2025年网络安全专业是否有前景&#xff1f; 看到很多网友在讨论2025年网络安全是否还有前途&#xff1f;IT类工作想转行网安方面是否有优势&#xff1f;该怎么做&#xff01;首先让我们看看张雪峰老师是怎么说的。 原视频素材来源网络 一、网安人才缺口巨大 央视报道…

作者头像 李华
网站建设 2026/4/22 23:26:34

一键获取B站高清视频的终极解决方案

一键获取B站高清视频的终极解决方案 【免费下载链接】bilibili-downloader B站视频下载&#xff0c;支持下载大会员清晰度4K&#xff0c;持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为无法保存心仪的B站视频而烦恼吗&#xff1f…

作者头像 李华
网站建设 2026/4/23 10:51:25

大模型推理性能革命:揭秘昇腾FusionSpec异步并行优化技术

大模型推理性能革命&#xff1a;揭秘昇腾FusionSpec异步并行优化技术 【免费下载链接】ascend-inference-cluster 昇腾超大规模MoE模型推理部署技术分享 项目地址: https://gitcode.com/ascend-tribe/ascend-inference-cluster 引言&#xff1a;你的推理服务还在被低效困…

作者头像 李华
网站建设 2026/4/23 10:51:26

PS4存档管理革命:Apollo工具全面解锁游戏进度自由

还在为PS4游戏存档备份烦恼吗&#xff1f;想要轻松修改游戏进度却无从下手&#xff1f;Apollo Save Tool正是您需要的解决方案&#xff01;这款专为PS4玩家设计的存档管理神器&#xff0c;让您无需复杂操作就能完成存档备份、修改和账户激活&#xff0c;真正实现游戏进度的完全…

作者头像 李华
网站建设 2026/4/23 10:50:43

3步打造个人知乎知识库:终极内容备份方案

3步打造个人知乎知识库&#xff1a;终极内容备份方案 【免费下载链接】zhihu_spider_selenium 爬取知乎个人主页的想法、文篇和回答 项目地址: https://gitcode.com/gh_mirrors/zh/zhihu_spider_selenium 你是否曾经在深夜翻看自己多年前的知乎回答&#xff0c;却发现有…

作者头像 李华