news 2026/8/18 19:33:16

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/8/18 13:06:46

商业智能的核爆:GPT-5.2 如何化身企业“数字分身”?

GPT-5.2的发布&#xff0c;不仅仅意味着文本生成能力的提升&#xff0c;更标志着 OpenAI 对企业级市场发起了迄今为止最猛烈的攻势。在幻觉率大幅下降、推理能力显著增强的背景下&#xff0c;GPT-5.2 的核心战略已经转向 Agentic Computing&#xff08;智能体计算&#xff09;。…

作者头像 李华
网站建设 2026/8/18 18:03:05

为什么有了BIOS后还需要ACPI?

刚学习BIOS的时候不理解为什么ACPI是BIOS和OS之间的接口&#xff0c;主要作用是将BIOS获取的硬件配置信息上报给OS&#xff0c;而BIOS是硬件和OS之间的接口&#xff0c;作用也是将硬件的信息上报给OS&#xff0c;那为什么还需要ACPI来上传二手的硬件信息呢&#xff1f;直接BIOS…

作者头像 李华
网站建设 2026/8/17 17:52:06

如何用AI预测系统MTTF,提升开发可靠性

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个基于机器学习的MTTF预测系统。系统需要能够&#xff1a;1. 导入历史设备运行数据&#xff08;CSV格式&#xff09;&#xff1b;2. 自动进行数据清洗和特征工程&#xff1b;…

作者头像 李华
网站建设 2026/8/18 0:13:40

GPT-5.2震撼发布:三档模型精准出击,性能全面革新!

一场由谷歌Gemini 3引发的AI军备竞赛&#xff0c;促使OpenAI启动“红色警报”&#xff0c;在短短一个月内完成了从GPT-5.1到GPT-5.2的跨越式升级。北京时间12月11日&#xff0c;OpenAI正式发布了GPT-5的最新升级版本GPT-5.2。这一版本在通用智能、长文本处理、智能体工具调用和…

作者头像 李华
网站建设 2026/8/16 13:40:30

Reubah + CPolar 联动实践:如何在无公网 IP 的 Linux 服务器上构建可外网访问的文档图像转换服务

文章目录前言【视频教程】1. Docker部署2. 简单使用演示3. 安装cpolar内网穿透4. 配置公网地址5. 配置固定公网地址Reubah 的本地高效处理与 CPolar 的远程访问能力相结合&#xff0c;让图片和文档处理不再受限于局域网&#xff0c;无论是论是居家办公还是外出&#xff0c;都能…

作者头像 李华