
Selenium4.0自动化测试从入门到实践
文章平均质量分 81
以Selenium 4 +Python为基础的UI自动化测试结合自己多年的工作实践经验将工作过程中对Selenium的思考实践倾囊相授:主要包括Selenium基础用法、高级用法、测试环境切换、图表自动化、PO模式、关键字模式、持续集成、测试报告生成等,通过对本专栏的学习能极大的提升UI自动化技术。
知识的宝藏
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Selenium4.0自动化测试从入门到实践介绍
本专栏是以Selenium 4.0 +Python 3为基础的UI自动化测试,小编结合自己多年的工作实践经验将工作过程中对Selenium的思考、实践倾囊相授:主要包括Selenium基础用法、高级用法、测试环境切换、图表自动化、PO模式(页面对象)、关键字模式、持续集成、测试报告生成、疑难杂症等,通过对本专栏的学习读者能从0到1极大的提升自己的Web UI自动化测试技术。原创 2024-07-29 00:15:00 · 1190 阅读 · 0 评论 -
Selenium 柱状图自动化测试
柱状图是图表中非常基本的图形之一,可以很直观的对多项数据进行对比展示。那么如何对柱状图进行自动化测试呢?本篇小编将结合实际工作经验来分享一下小编在工作中使用Selenium对柱状图进行自动化测试的经验。本篇还是讲述以echarts为图表库构建的基础柱状图图表的自动化测试,选一个echarts官方示例有交互数据的柱状图:Apache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。原创 2024-02-24 21:21:01 · 2106 阅读 · 0 评论 -
HighCharts图表自动化简介
在任何应用程序中捕获并以图形或图表形式显示的分析数据是任何产品或系统的关键部分,因为它提供了对实时数据的洞察。验证此类分析数据非常重要,因为不准确的数据可能会在报告中产生问题,并可能影响应用程序/系统的其他相关领域。原创 2024-09-14 22:09:32 · 1393 阅读 · 0 评论 -
Selenium事件监听
你一定总是渴望从WebDriver中获得更多的日志信息,以便调试你的脚本或记录更多有关测试的信息。EventFiringWebDriver 是一个类,用于包装你的WebDriver以抛出事件,而WebDriverEventListener是一个接口,你需要实现这个接口来捕获WebDriver事件。一旦实现了WebDriverEventListener,你将需要实现一系列的方法,每一个方法对应一个事件。这样,每当WebDriver触发某个事件时,我们的监听器就会执行相应的处理方法。然后,我们创建了一个。原创 2024-09-10 21:51:16 · 606 阅读 · 0 评论 -
Selenium 执行JS脚本之executeScript方法
在早期版本的Selenium中,JavaScript就是被使用的语言之一,现在Selenium WebDriver依然利用JavaScript执行一些操作。这意味着浏览器内部实现了JavaScript,并理解JavaScript命令。JavaScriptExecutor是一个接口,它提供了通过Selenium驱动程序执行JavaScript的机制,包括。的方式来找到页面上的元素;的方法,可以在当前加载的浏览器页面上下文中执行JavaScript代码。可以使用JavaScript来寻找页面上的元素。原创 2024-09-10 06:30:00 · 348 阅读 · 0 评论 -
Selenium集成Sikuli基于图像识别的自动化测试
Sikuli是一款开源工具,用于基于图像识别的自动化测试。它可以识别屏幕上的图像,并模拟用户的交互,如点击按钮、填写表单等。Sikuli非常适合处理那些传统的基于DOM元素的自动化工具难以应对的情况,比如Flash对象、图片按钮等。Selenium是一个用于Web应用程序测试的工具,它直接与浏览器交互,支持多种编程语言,如Java、Python等,并且能够运行在不同的操作系统之上。原创 2024-09-09 00:30:00 · 532 阅读 · 0 评论 -
Selenium处理Web表格
Web表格是在网页上用来表示数据或信息的一种形式,这些数据或信息可以是静态的也可以是动态的。在Selenium WebDriver中,可以通过使用WebElement函数和定位器来访问Web表格及其元素。一个典型的例子是电子商务平台上显示的产品规格表。通过上述方法,我们可以有效地使用XPath来访问Web表格中的元素。如果元素在HTML代码中写得很深,以至于很难确定谓词的数字,可以使用该元素的独特属性代替。在XPath中,属性作为谓词使用时,需要在其前面加上“@”符号。原创 2024-09-09 00:15:00 · 334 阅读 · 0 评论 -
使用Selenium WebDriver来检测网页上的坏链接
坏链接是指那些不可达的链接或URL,它们可能是由于某些服务器错误而导致无法访问。一个URL通常会有一个有效的状态码2xx。对于无效的请求,HTTP状态码是4xx(客户端错误)或5xx(服务器端错误)。我们通常需要点击链接来确认它是否工作,否则很难确定。原创 2024-09-07 10:11:54 · 885 阅读 · 0 评论 -
如何在Selenium中使用Chrome进行网络限速
通过上述步骤,您可以在Selenium中使用Java来设置网络条件并模拟不同的网络环境。这有助于识别潜在问题并改善Web应用程序的性能。请确保根据您的实际环境调整ChromeDriver的路径,并且可能还需要对代码进行进一步的调试和完善才能完全满足您的需求。原创 2024-09-08 00:15:00 · 296 阅读 · 0 评论 -
如何使用Selenium捕获控制台日志
通过上述步骤,您可以在Selenium中使用Java捕获控制台日志。这不仅有助于调试Web应用程序,还可以用于自动化测试中验证控制台输出是否按预期工作。请确保根据您的实际环境调整ChromeDriver的路径,并且可能还需要对代码进行进一步的调试和完善才能完全满足您的需求。原创 2024-09-08 00:30:00 · 395 阅读 · 0 评论 -
如何在Selenium中使用Chrome DevTools进行交互
通过上述步骤,您可以在Selenium中使用Java与Chrome DevTools进行交互,从而执行各种自动化任务,如性能测试、网络分析、模拟地理位置等。这不仅有助于调试Web应用程序,还可以用于自动化测试中验证Web页面的行为。请确保根据您的实际环境调整ChromeDriver的路径,并且可能还需要对代码进行进一步的调试和完善才能完全满足您的需求。原创 2024-09-06 22:47:21 · 870 阅读 · 0 评论 -
如何在Selenium中捕获网络请求响应
通过上述步骤,您可以在Selenium中使用Java捕获网络请求的响应。这不仅有助于调试Web应用程序,还可以用于自动化测试中验证网络请求是否正确发出。请确保根据您的实际环境调整ChromeDriver的路径,并且可能还需要对代码进行进一步的调试和完善才能完全满足您的需求。原创 2024-09-06 22:28:36 · 918 阅读 · 0 评论 -
使用Selenium WebDriver捕获网络请求
通过上述步骤,我们可以在Selenium中使用Python捕获网络请求。这不仅有助于调试Web应用程序,还可以用于自动化测试中验证网络请求是否正确发出。请确保根据您的实际环境调整ChromeDriver的路径,并且可能还需要对代码进行进一步的调试和完善才能完全满足您的需求。原创 2024-09-06 22:21:48 · 749 阅读 · 0 评论 -
如何在 Selenium 中获取网络调用请求?
捕获网络请求对于理解网站的工作方式以及传输的数据至关重要。Selenium 作为一种 Web 自动化工具,可以用于捕获网络请求。本文将讨论如何使用 Selenium 在 Java 中捕获网络请求并从网站检索数据。我们可以使用浏览器开发者工具轻松捕获网络请求或日志。大多数现代 Web 浏览器都内置了开发者工具,允许我们查看和捕获网络请求。我们可以通过右键单击网页并选择“检查”选项来访问开发者工具。原创 2024-09-07 03:00:00 · 766 阅读 · 0 评论 -
Selenium clear无效解决办法
您可以创建一个自定义的方法来处理清除输入框的操作,该方法可以根据具体情况选择合适的方法。# 尝试使用 clear()# 如果 clear() 失败,尝试使用 sendKeys# 如果仍然失败,使用 JavaScript# 示例用法如果clear()方法不起作用,您可以尝试使用sendKeys来模拟删除键,或者使用 JavaScript 直接操作 DOM。确保元素是可见的并且可以编辑。如果问题仍然存在,考虑是否有其他框架或库的限制,并采取相应的解决措施。原创 2024-07-27 19:49:16 · 527 阅读 · 0 评论 -
Pytest设置日志
如果您需要自定义日志格式,可以使用logging或loguru的配置选项。例如,使用logging在 pytest 中,您可以使用内置的日志功能来记录测试过程中的信息。通过命令行参数和配置文件,您可以控制日志级别和输出位置。如果您需要更高级的日志管理功能,可以考虑使用插件。原创 2024-07-29 00:45:00 · 445 阅读 · 0 评论 -
Pytest软断言
如果您不希望使用外部插件,也可以自己编写一个简单的软断言函数。在这个例子中,我们定义了一个函数,它接受一个条件和一条错误消息。如果条件不满足,则将错误消息添加到一个列表中。在测试结束时,如果列表中有任何失败的断言,我们将使用报告它们。使用插件可以方便地在 pytest 中实现假设检查。这有助于在测试过程中捕获更多的信息,并提供更详细的错误报告。如果您需要控制测试的执行流程和失败时的行为,提供了灵活的选项来满足这些需求。使用插件可以方便地在 pytest 中实现软断言。原创 2024-07-28 00:30:00 · 176 阅读 · 0 评论 -
编写第一个Selenium脚本
这些capabilities用于所有浏览器.在 Selenium 3 中, capabilities是借助"Desired Capabilities"类定义于会话中的. 从 Selenium 4 开始, 您必须使用浏览器选项类. 对于远程驱动程序会话, 浏览器选项实例是必需的, 因为它确定将使用哪个浏览器.这些选项在。Selenium所做的一切, 就是发送给浏览器命令, 用以执行某些操作或为信息发送请求. 您将使用Selenium执行的大部分操作, 都是以下基本命令的组合。选项 描述您想要的会话类型;原创 2023-12-16 10:28:39 · 1209 阅读 · 0 评论 -
pytest如何设置失败重试
如果您需要根据特定条件来决定是否重试,可以在测试函数中使用装饰器来指定重试条件。在这个例子中,reruns=2表示最多重试两次,表示每次重试之间等待 1 秒。通过使用插件,您可以轻松地设置测试失败后的重试次数。这有助于在某些情况下提高测试的稳定性,尤其是在网络不稳定或系统负载波动的情况下。如果您需要更高级的定制功能,可以考虑使用装饰器来控制重试行为。原创 2024-07-28 00:15:00 · 253 阅读 · 0 评论 -
Webdriver Manager 简介
最近看selenium官方文档发现示例有用到webdriver_manager 这个模块,以为是selenium官方的包,结果导入示例代码显示包没引入,然后才知道是第三方库,库如其名:webdriver管理,就是自动管理selenium webdriver 二进制驱动文件的,不需要手动去下载然后在代码里硬编码。默认情况下,所有驱动程序二进制文件都保存在 user.home/.wdm 文件夹中。而且每次发布新版本的驱动程序时,您都应该一遍又一遍地重复所有步骤。以 Chrome 为例。原创 2022-09-26 12:21:17 · 1300 阅读 · 0 评论 -
Pytest setup teardown传统实现及fixture实现
本节描述了如何在每个模块/类/函数的基础上实现fixture(设置和拆卸测试状态)的经典和流行的方法。注意:虽然这些setup/teardown方法对于来自unittest或nose背景的用户来说既简单又熟悉,但您也可以考虑使用pytest更强大的fixture机制,该机制利用了依赖注入的概念,从而为管理测试状态提供了更模块化、更可扩展的方法,尤其是对于大型项目和功能测试。您可以在同一文件中混合使用两种fixture机制,但unittest.TestCase子类的测试方法无法接收fixture参数。原创 2023-04-29 03:00:00 · 1073 阅读 · 0 评论 -
Pytest设置测试用例执行顺序
您可以创建一个文件,并在其中定义一个使用插件可以方便地控制测试用例的执行顺序。只需安装插件并使用适当的装饰器即可实现您的需求。如果需要更复杂的排序逻辑,可以考虑使用 collection hooks。原创 2024-07-27 19:17:49 · 864 阅读 · 0 评论 -
Pytest 分组测试
pytest]markers =sit: 标记测试为sit (deselect with '-m "not sit"')uat: 标记测试为uatprd: 标记测试为prdserialprint('sit环境测试')print('uat环境测试')以上测试选择sit标记的测试,不选中uat标记的测试输出如下:从图片看出运行结果与期望一致~原创 2023-06-09 21:54:49 · 1326 阅读 · 0 评论 -
使用pytest命令行实现环境切换
在自动化测试过程中经常需要在不同的环境下进行测试验证,所以写自动化测试代码时需要考虑不同环境切换的情况。pytest钩子函数pytest_addoption可以很好帮我们解决这个痛点。parser注册argparse样式选项和ini样式配置值,在测试运行开始时调用一次。由于pytest在启动过程中如何发现插件,因此该函数只能在位于测试根目录的插件或conftest.py文件中实现。参数parser(pytest.parser)–若要添加命令行选项,请调用parser.addoption(…)。原创 2023-07-06 22:24:12 · 1014 阅读 · 0 评论 -
Pytest集成Allure Report
这可以通过几种方式实现:您可以添加一个提供描述字符串的@allure.description装饰器,也可以使用@allre.description_html提供一些要在测试用例的“描述”部分中呈现的html。有两个装饰器:@allure.feature和@allure.story,用于根据您项目的功能/故事细分来标记您的测试(有关背景信息,请参阅维基百科上的BDD文章)。Allure报告的第一个可能也是最重要的方面是,它允许获得每个测试调用的非常详细的逐步表示。有时,您希望能够灵活地处理要执行的测试。原创 2023-06-22 22:08:33 · 1302 阅读 · 0 评论 -
Selenium 页面加载策略
共有三种类型的页面加载策略.页面加载策略可以在此链接查询文档的属性描述当前文档的加载状态。当通过URL导航到新页面时, 默认情况下, WebDriver将暂缓完成导航方法 (例如, driver.navigate().get())直到文档就绪状态完成. 这并非意味着该页面已完成加载, 特别是对于使用 JavaScript 在就绪状态返回完成后 动态加载内容单页应用程序的站点. 另请注意此行为不适用于单击元素或提交表单后出现的导航行为。原创 2023-06-02 02:30:00 · 1474 阅读 · 0 评论 -
Selenium 定位策略
在DOM中标识一个或多个特定元素的方法.定位器是在页面上标识元素的一种方法。它是传送给方法的参数。查看寻找的小技巧, 包含在查找方法中,不同时间,不同原因下,单独声明的定位器的使用方法。原创 2023-06-22 21:04:18 · 1431 阅读 · 0 评论 -
selenium查找svg元素
XPath是一种用于定位XML文档中的web元素的语言,包括构成网页的HTML文档。在Selenium中,XPath是在网页上查找元素(包括SVG(可伸缩矢量图形)元素)最广泛使用的方法之一。SVG元素不同于常规HTML元素,因为它们是使用XML而不是HTML创建的。在Selenium中查找它们需要与查找HTML元素不同的方法。本文将介绍使用XPath在Selenium中定位SVG元素的步骤。我们将使用我们的硒游乐场网站来自动化SVG元素——原创 2023-07-13 21:28:40 · 2582 阅读 · 2 评论 -
Selenium 元素不能定位总结
建议编码时现在浏览器调试模式下使用编写的xpath、css selector 在待测页面定位一下,看能不能识别到元素。原创 2023-11-21 21:54:32 · 1392 阅读 · 0 评论 -
Selenium 相对定位
Selenium传统定位基本能解决80%的定位需求,但是还是有一些复杂场景传统定位定不到的场景。在现在框架横行的年代以及快速迭代的开发流程中,开发为了完成任务很多html文档都没有id,class或者其他易于识别的dom元素,虽然使用绝对路径能够定位到,但是你不能保证下次是有效的。原创 2023-06-20 20:44:21 · 1580 阅读 · 0 评论 -
Selenium Web元素交互
用于操纵表单的高级指令集.原创 2023-06-27 22:50:48 · 848 阅读 · 0 评论 -
Selenium 显示等待、隐式等待及流畅等待
因为它是一个指示浏览器做什么的进程外库,而且web平台本质上是异步的,所以WebDriver不跟踪DOM的实时活动状态。—是保证同步的,因为直到命令在浏览器中被完成之前函数调用是不会返回的(或者回调是不会在回调形式的语言中触发的)。等待条件可以根据您的需要进行定制。和隐式等待混合在一起会导致意想不到的结果,就是说即使元素可用或条件为真也要等待睡眠的最长时间。当条件为true且阻塞等待终止时,条件的返回值将成为等待的返回值。用户可以配置等待来忽略等待时出现的特定类型的异常,例如在页面上搜索元素时出现的。原创 2023-06-01 21:42:36 · 927 阅读 · 0 评论 -
理解Selenium常见的异常
如何处理Selenium代码中的各种问题.原创 2023-06-05 20:47:59 · 839 阅读 · 0 评论 -
Selenium同窗口和标签一起工作
如果只有两个选项卡或窗口被打开,并且你知道从哪个窗口开始, 则你可以遍历 WebDriver, 通过排除法可以看到两个窗口或选项卡,然后切换到你需要的窗口或选项卡。如果除了新窗口之外, 您打开了两个以上的窗口 (或) 标签页,您可以通过遍历 WebDriver 看到两个窗口或选项卡,并切换到非原始窗口。当你完成了一个窗口或标签页的工作时,_并且_它不是浏览器中最后一个打开的窗口或标签页时,你应该关闭它并切换回你之前使用的窗口。假设您遵循了前一节中的代码示例,您将把前一个窗口句柄存储在一个变量中。原创 2023-06-27 23:10:54 · 664 阅读 · 0 评论 -
Selenium 网络元素的信息
这个函数对一个元素的性质和在树中的关系做了许多近似的判断,以返回一个值。此方法用于检查所连接的元素在网页上是启用还是禁用状态。获取与 DOM 属性关联的运行时的值。它返回与该元素的 DOM 特性或属性关联的数据。值, 如果连接的元素显示在当前的浏览器上下文中,则为True,否则返回false。此方法用于检查连接的元素是否正确显示在网页上. 返回一个。此方法用于获取在当前浏览上下文中具有焦点的被引用元素的。获取当前浏览上下文中元素的特定计算样式属性的值。用于获取参照元素的尺寸和坐标。原创 2023-06-27 22:58:27 · 1218 阅读 · 0 评论 -
Jenkins 有头模式运行selenium
Jenkins如果是以启动服务方式安装的话(即可执行程序安装)默认运行selenium都是无头模式的。然而当selenium脚本中封装了其他的库的代码的话无头模式很容易失败,最近笔者碰到一个问题就是:笔者在selenium脚本中使用了pyautogui库来模拟键盘鼠标操作,但是selenium无头模式运行的话这些代码会报错!所以需要在Jenkins下有头模式运行。这里笔者分享一种方法可以让Jenkins以有头模式运行selenium。原创 2023-04-13 21:55:30 · 652 阅读 · 0 评论 -
Selenium 执行速度慢原因总结
例如,将隐式等待设置为10秒,将显式等待设置为15秒,可能会导致在20秒后发生超时。隐式等待是告诉WebDriver如果在查找一个或多个不是立即可用的元素时轮询DOM一段时间。默认设置为0,表示禁用。一旦设置好,隐式等待就被设置为会话的生命周期。一般情况下不建议使用隐式等待,现在web框架很多元素都是动态加载的建议尽量使用显示等待。原创 2023-06-03 02:30:00 · 3489 阅读 · 0 评论 -
Selenium中常用的JS操作总结
在UI自动化测试中,虽然大部分操作selenium能够解决,但是很多时候selenium在某些情况也会显得有心无力,JavaScript作为前端交互的老祖宗在这方面就显得游刃有余了,小编把自己工作多年中常用的js操作分享给大家,希望能助各位童鞋一臂之力。原创 2023-11-24 21:53:18 · 1080 阅读 · 0 评论 -
Selenium ActionChains
用于向 Web 浏览器提供虚拟化设备输入操作的低级接口.除了高级之外,还提供了对指定输入设备 可以执行的确切操作的精细控制. Selenium为3种输入源提供了接口: 键盘设备的键输入, 鼠标, 笔或触摸设备的输入, 以及滚轮设备的滚轮输入 (在Selenium 4.2中引入). Selenium允许您构建分配给特定输入的独立操作命令, 会将他们链接在一起, 并调用关联的执行方法以一次执行它们.原创 2023-06-27 22:46:57 · 1612 阅读 · 0 评论 -
Python Selenium 关键字驱动
实际情况下这些关键字太细使用过程中如果场景复杂要填的表格项会非常多,因此需要封装一些常用的关键字比如登录,退出登录等操作,这里给个思路,因为Python eval 函数是拼接字符串执行的,因此其实定位方法和操作值里填一个参数或者多个参数都是一样的,关键在于怎么去把多个参数分隔成想要的数据。如通常登录至少包含3个查找元素:用户输入、密码输入、登录,那么在填写登录关键字的时候就可以这样填:序号测试步骤描述关键字操作操作元素的定位表达式操作值1登录login。原创 2023-04-25 22:45:31 · 2111 阅读 · 0 评论