Selenium4.0自动化测试从入门到实践
文章平均质量分 82
以Selenium 4 +Python为基础的UI自动化测试结合自己多年的工作实践经验将工作过程中对Selenium的思考实践倾囊相授:主要包括Selenium基础用法、高级用法、测试环境切换、图表自动化、PO模式、关键字模式、持续集成、测试报告生成等,通过对本专栏的学习能极大的提升UI自动化技术。
知识的宝藏
这个作者很懒,什么都没留下…
展开
-
Selenium clear无效解决办法
您可以创建一个自定义的方法来处理清除输入框的操作,该方法可以根据具体情况选择合适的方法。# 尝试使用 clear()# 如果 clear() 失败,尝试使用 sendKeys# 如果仍然失败,使用 JavaScript# 示例用法如果clear()方法不起作用,您可以尝试使用sendKeys来模拟删除键,或者使用 JavaScript 直接操作 DOM。确保元素是可见的并且可以编辑。如果问题仍然存在,考虑是否有其他框架或库的限制,并采取相应的解决措施。原创 2024-07-27 19:49:16 · 31 阅读 · 0 评论 -
Selenium4.0自动化测试从入门到实践介绍
本专栏是以Selenium 4.0 +Python 3为基础的UI自动化测试,小编结合自己多年的工作实践经验将工作过程中对Selenium的思考、实践倾囊相授:主要包括Selenium基础用法、高级用法、测试环境切换、图表自动化、PO模式(页面对象)、关键字模式、持续集成、测试报告生成、疑难杂症等,通过对本专栏的学习读者能从0到1极大的提升自己的Web UI自动化测试技术。原创 2024-07-29 00:15:00 · 0 阅读 · 0 评论 -
Pytest设置日志
如果您需要自定义日志格式,可以使用logging或loguru的配置选项。例如,使用logging在 pytest 中,您可以使用内置的日志功能来记录测试过程中的信息。通过命令行参数和配置文件,您可以控制日志级别和输出位置。如果您需要更高级的日志管理功能,可以考虑使用插件。原创 2024-07-29 00:45:00 · 0 阅读 · 0 评论 -
Pytest软断言
如果您不希望使用外部插件,也可以自己编写一个简单的软断言函数。在这个例子中,我们定义了一个函数,它接受一个条件和一条错误消息。如果条件不满足,则将错误消息添加到一个列表中。在测试结束时,如果列表中有任何失败的断言,我们将使用报告它们。使用插件可以方便地在 pytest 中实现假设检查。这有助于在测试过程中捕获更多的信息,并提供更详细的错误报告。如果您需要控制测试的执行流程和失败时的行为,提供了灵活的选项来满足这些需求。使用插件可以方便地在 pytest 中实现软断言。原创 2024-07-28 00:30:00 · 12 阅读 · 0 评论 -
pytest如何设置失败重试
如果您需要根据特定条件来决定是否重试,可以在测试函数中使用装饰器来指定重试条件。在这个例子中,reruns=2表示最多重试两次,表示每次重试之间等待 1 秒。通过使用插件,您可以轻松地设置测试失败后的重试次数。这有助于在某些情况下提高测试的稳定性,尤其是在网络不稳定或系统负载波动的情况下。如果您需要更高级的定制功能,可以考虑使用装饰器来控制重试行为。原创 2024-07-28 00:15:00 · 15 阅读 · 0 评论 -
编写第一个Selenium脚本
这些capabilities用于所有浏览器.在 Selenium 3 中, capabilities是借助"Desired Capabilities"类定义于会话中的. 从 Selenium 4 开始, 您必须使用浏览器选项类. 对于远程驱动程序会话, 浏览器选项实例是必需的, 因为它确定将使用哪个浏览器.这些选项在。Selenium所做的一切, 就是发送给浏览器命令, 用以执行某些操作或为信息发送请求. 您将使用Selenium执行的大部分操作, 都是以下基本命令的组合。选项 描述您想要的会话类型;原创 2023-12-16 10:28:39 · 1059 阅读 · 0 评论 -
Webdriver Manager 简介
最近看selenium官方文档发现示例有用到webdriver_manager 这个模块,以为是selenium官方的包,结果导入示例代码显示包没引入,然后才知道是第三方库,库如其名:webdriver管理,就是自动管理selenium webdriver 二进制驱动文件的,不需要手动去下载然后在代码里硬编码。默认情况下,所有驱动程序二进制文件都保存在 user.home/.wdm 文件夹中。而且每次发布新版本的驱动程序时,您都应该一遍又一遍地重复所有步骤。以 Chrome 为例。原创 2022-09-26 12:21:17 · 1114 阅读 · 0 评论 -
Pytest setup teardown传统实现及fixture实现
本节描述了如何在每个模块/类/函数的基础上实现fixture(设置和拆卸测试状态)的经典和流行的方法。注意:虽然这些setup/teardown方法对于来自unittest或nose背景的用户来说既简单又熟悉,但您也可以考虑使用pytest更强大的fixture机制,该机制利用了依赖注入的概念,从而为管理测试状态提供了更模块化、更可扩展的方法,尤其是对于大型项目和功能测试。您可以在同一文件中混合使用两种fixture机制,但unittest.TestCase子类的测试方法无法接收fixture参数。原创 2023-04-29 03:00:00 · 961 阅读 · 0 评论 -
Pytest设置测试用例执行顺序
您可以创建一个文件,并在其中定义一个使用插件可以方便地控制测试用例的执行顺序。只需安装插件并使用适当的装饰器即可实现您的需求。如果需要更复杂的排序逻辑,可以考虑使用 collection hooks。原创 2024-07-27 19:17:49 · 124 阅读 · 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 · 1158 阅读 · 0 评论 -
使用pytest命令行实现环境切换
在自动化测试过程中经常需要在不同的环境下进行测试验证,所以写自动化测试代码时需要考虑不同环境切换的情况。pytest钩子函数pytest_addoption可以很好帮我们解决这个痛点。parser注册argparse样式选项和ini样式配置值,在测试运行开始时调用一次。由于pytest在启动过程中如何发现插件,因此该函数只能在位于测试根目录的插件或conftest.py文件中实现。参数parser(pytest.parser)–若要添加命令行选项,请调用parser.addoption(…)。原创 2023-07-06 22:24:12 · 801 阅读 · 0 评论 -
Pytest集成Allure Report
这可以通过几种方式实现:您可以添加一个提供描述字符串的@allure.description装饰器,也可以使用@allre.description_html提供一些要在测试用例的“描述”部分中呈现的html。有两个装饰器:@allure.feature和@allure.story,用于根据您项目的功能/故事细分来标记您的测试(有关背景信息,请参阅维基百科上的BDD文章)。Allure报告的第一个可能也是最重要的方面是,它允许获得每个测试调用的非常详细的逐步表示。有时,您希望能够灵活地处理要执行的测试。原创 2023-06-22 22:08:33 · 1113 阅读 · 0 评论 -
Selenium 页面加载策略
共有三种类型的页面加载策略.页面加载策略可以在此链接查询文档的属性描述当前文档的加载状态。当通过URL导航到新页面时, 默认情况下, WebDriver将暂缓完成导航方法 (例如, driver.navigate().get())直到文档就绪状态完成. 这并非意味着该页面已完成加载, 特别是对于使用 JavaScript 在就绪状态返回完成后 动态加载内容单页应用程序的站点. 另请注意此行为不适用于单击元素或提交表单后出现的导航行为。原创 2023-06-02 02:30:00 · 1232 阅读 · 0 评论 -
Selenium 定位策略
在DOM中标识一个或多个特定元素的方法.定位器是在页面上标识元素的一种方法。它是传送给方法的参数。查看寻找的小技巧, 包含在查找方法中,不同时间,不同原因下,单独声明的定位器的使用方法。原创 2023-06-22 21:04:18 · 1307 阅读 · 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 · 2138 阅读 · 2 评论 -
Selenium 元素不能定位总结
建议编码时现在浏览器调试模式下使用编写的xpath、css selector 在待测页面定位一下,看能不能识别到元素。原创 2023-11-21 21:54:32 · 1236 阅读 · 0 评论 -
Selenium 相对定位
Selenium传统定位基本能解决80%的定位需求,但是还是有一些复杂场景传统定位定不到的场景。在现在框架横行的年代以及快速迭代的开发流程中,开发为了完成任务很多html文档都没有id,class或者其他易于识别的dom元素,虽然使用绝对路径能够定位到,但是你不能保证下次是有效的。原创 2023-06-20 20:44:21 · 1334 阅读 · 0 评论 -
Selenium Web元素交互
用于操纵表单的高级指令集.原创 2023-06-27 22:50:48 · 705 阅读 · 0 评论 -
Selenium 显示等待、隐式等待及流畅等待
因为它是一个指示浏览器做什么的进程外库,而且web平台本质上是异步的,所以WebDriver不跟踪DOM的实时活动状态。—是保证同步的,因为直到命令在浏览器中被完成之前函数调用是不会返回的(或者回调是不会在回调形式的语言中触发的)。等待条件可以根据您的需要进行定制。和隐式等待混合在一起会导致意想不到的结果,就是说即使元素可用或条件为真也要等待睡眠的最长时间。当条件为true且阻塞等待终止时,条件的返回值将成为等待的返回值。用户可以配置等待来忽略等待时出现的特定类型的异常,例如在页面上搜索元素时出现的。原创 2023-06-01 21:42:36 · 737 阅读 · 0 评论 -
理解Selenium常见的异常
如何处理Selenium代码中的各种问题.原创 2023-06-05 20:47:59 · 563 阅读 · 0 评论 -
Selenium同窗口和标签一起工作
如果只有两个选项卡或窗口被打开,并且你知道从哪个窗口开始, 则你可以遍历 WebDriver, 通过排除法可以看到两个窗口或选项卡,然后切换到你需要的窗口或选项卡。如果除了新窗口之外, 您打开了两个以上的窗口 (或) 标签页,您可以通过遍历 WebDriver 看到两个窗口或选项卡,并切换到非原始窗口。当你完成了一个窗口或标签页的工作时,_并且_它不是浏览器中最后一个打开的窗口或标签页时,你应该关闭它并切换回你之前使用的窗口。假设您遵循了前一节中的代码示例,您将把前一个窗口句柄存储在一个变量中。原创 2023-06-27 23:10:54 · 570 阅读 · 0 评论 -
Selenium 网络元素的信息
这个函数对一个元素的性质和在树中的关系做了许多近似的判断,以返回一个值。此方法用于检查所连接的元素在网页上是启用还是禁用状态。获取与 DOM 属性关联的运行时的值。它返回与该元素的 DOM 特性或属性关联的数据。值, 如果连接的元素显示在当前的浏览器上下文中,则为True,否则返回false。此方法用于检查连接的元素是否正确显示在网页上. 返回一个。此方法用于获取在当前浏览上下文中具有焦点的被引用元素的。获取当前浏览上下文中元素的特定计算样式属性的值。用于获取参照元素的尺寸和坐标。原创 2023-06-27 22:58:27 · 1086 阅读 · 0 评论 -
Jenkins 有头模式运行selenium
Jenkins如果是以启动服务方式安装的话(即可执行程序安装)默认运行selenium都是无头模式的。然而当selenium脚本中封装了其他的库的代码的话无头模式很容易失败,最近笔者碰到一个问题就是:笔者在selenium脚本中使用了pyautogui库来模拟键盘鼠标操作,但是selenium无头模式运行的话这些代码会报错!所以需要在Jenkins下有头模式运行。这里笔者分享一种方法可以让Jenkins以有头模式运行selenium。原创 2023-04-13 21:55:30 · 528 阅读 · 0 评论 -
Selenium 执行速度慢原因总结
例如,将隐式等待设置为10秒,将显式等待设置为15秒,可能会导致在20秒后发生超时。隐式等待是告诉WebDriver如果在查找一个或多个不是立即可用的元素时轮询DOM一段时间。默认设置为0,表示禁用。一旦设置好,隐式等待就被设置为会话的生命周期。一般情况下不建议使用隐式等待,现在web框架很多元素都是动态加载的建议尽量使用显示等待。原创 2023-06-03 02:30:00 · 2695 阅读 · 0 评论 -
Selenium中常用的JS操作总结
在UI自动化测试中,虽然大部分操作selenium能够解决,但是很多时候selenium在某些情况也会显得有心无力,JavaScript作为前端交互的老祖宗在这方面就显得游刃有余了,小编把自己工作多年中常用的js操作分享给大家,希望能助各位童鞋一臂之力。原创 2023-11-24 21:53:18 · 947 阅读 · 0 评论 -
Selenium ActionChains
用于向 Web 浏览器提供虚拟化设备输入操作的低级接口.除了高级之外,还提供了对指定输入设备 可以执行的确切操作的精细控制. Selenium为3种输入源提供了接口: 键盘设备的键输入, 鼠标, 笔或触摸设备的输入, 以及滚轮设备的滚轮输入 (在Selenium 4.2中引入). Selenium允许您构建分配给特定输入的独立操作命令, 会将他们链接在一起, 并调用关联的执行方法以一次执行它们.原创 2023-06-27 22:46:57 · 1378 阅读 · 0 评论 -
Python Selenium 关键字驱动
实际情况下这些关键字太细使用过程中如果场景复杂要填的表格项会非常多,因此需要封装一些常用的关键字比如登录,退出登录等操作,这里给个思路,因为Python eval 函数是拼接字符串执行的,因此其实定位方法和操作值里填一个参数或者多个参数都是一样的,关键在于怎么去把多个参数分隔成想要的数据。如通常登录至少包含3个查找元素:用户输入、密码输入、登录,那么在填写登录关键字的时候就可以这样填:序号测试步骤描述关键字操作操作元素的定位表达式操作值1登录login。原创 2023-04-25 22:45:31 · 1791 阅读 · 0 评论 -
Selenium登录关键字封装
这样一个登录就写了9行!这还是简单的登录场景,如果更复杂的场景这样做显然不太合适~可以将登录单独封装一个关键字,抛开打开浏览器访问网址等步骤来说一个登录要定位的至少包含3个元素:用户输入、密码输入、登录按钮,之前封装的关键字都是一个“关键字”,一个“定位方式”,一个“定位值” ,实际Python eval()函数执行是并不知道你这里写的是什么,因此没有必要要一一对应,也可以一个关键字:多个定位方式。我这边是用英文逗号分割的,当然也可以用其他符号但是不要和定位表达式里的值冲突就行了,不然会引发错误。原创 2023-04-29 20:58:43 · 668 阅读 · 0 评论 -
Python Selenium关键字驱动测试报告集成到Allure Report
目前关键字框架是遇到一个关键字执行一次然后写入一次测试结果,现在需要把Excel里的所有测试用例以sheet为一条测试场景为边界,将每一个sheet页里的所有关键字拼接为一条pytest测试用例,生成一个符合pytest 运行规则(即以test开头或者test结尾)的Python文件,然后使用pytest执行这条用例,然后pytest就能生成测试报告了,allure就能收集这些测试结果生成allure 测试报告。第二种办法就是借力使力:能不能借用pytest来运行关键字用例生成allure 测试报告呢?原创 2023-05-01 10:38:14 · 178 阅读 · 0 评论 -
Selenium page object模式Python
在web应用程序的UI中,有一些区域可以与测试交互。页面对象仅将这些对象建模为测试代码中的对象。这减少了重复代码的数量,意味着如果UI发生更改,则只需在一个位置应用修复。页面对象是一种在测试自动化中流行的设计模式,用于增强测试维护和减少代码重复。页面对象是一个面向对象的类,用作AUT页面的接口。然后,每当需要与该页面的UI交互时,测试就会使用该页面对象类的方法。好处是,如果页面的UI发生了更改,则测试本身不需要更改,只需要更改页面对象中的代码。随后,所有支持新UI的更改都位于同一位置。原创 2023-12-02 15:44:32 · 890 阅读 · 0 评论 -
Selenium Page object models Java
在web应用程序的UI中,有一些区域可以与测试交互。页面对象仅将这些对象建模为测试代码中的对象。这减少了重复代码的数量,意味着如果UI发生更改,则只需在一个位置应用修复。页面对象是一种在测试自动化中流行的设计模式,用于增强测试维护和减少代码重复。页面对象是一个面向对象的类,用作AUT页面的接口。然后,每当需要与该页面的UI交互时,测试就会使用该页面对象类的方法。好处是,如果页面的UI发生了更改,则测试本身不需要更改,只需要更改页面对象中的代码。随后,所有支持新UI的更改都位于同一位置。原创 2023-12-02 16:16:22 · 298 阅读 · 0 评论 -
Selenium 获取接口响应数据
有时候需要知道UI界面操作的同时接口响应数据是否正常,这时就需要获取接口响应数据。Selenium本身没有获取接口响应的api,但是可以通过第三方库seleniumwire获取接口响应数据。SeleniumWire扩展了Selenium的Python绑定,使您可以访问浏览器发出的底层请求。您以与Selenium相同的方式编写代码,但您获得了额外的API来检查请求和响应,并对其进行动态更改。原创 2023-07-12 20:48:23 · 3848 阅读 · 0 评论 -
Selenium 关键字驱动 Java
/通过java反射来建立关键字和Excel中数据的映射关系。Maven POM文件。原创 2018-11-02 19:33:22 · 1503 阅读 · 1 评论 -
Selenium clear无效解决办法
有些情况下selenium clear()方法不生效,这种情况下可以使用selenium ActionChains 模拟键盘去实现清除操作。原创 2023-05-30 21:22:07 · 134 阅读 · 0 评论 -
Selenium 捕获 console logs (Java)
有时候在进行自动化测试的时候控制台输出会帮忙定位问题,所以捕获控制台输出就显得很重要了~以下以selenium 4为例:我们可以使用driver.manage().logs().get(LogType.BROWSER)代码在Selenium中检索日志,该代码将返回一个包含所有控制台日志的LogEntries对象。原创 2023-08-22 21:09:24 · 1087 阅读 · 0 评论 -
使用Selenium与Chrome DevTools交互(Java)
开发人员工具是调试和分析网页的强大工具,许多现代浏览器都为其提供内置支持。它允许开发人员检查元素、调试JavaScript和分析网络活动。这篇文章将讨论Selenium如何与Chrome DevTools一起用于自动化任务和测试网页。原创 2023-07-23 16:16:42 · 2839 阅读 · 2 评论 -
Selenium 浏览器坐标转桌面坐标
做图表自动化项目需要做拖拽操作,但是selenium提供的拖拽API无效,因此借用pyautogui实现拖拽,但是pyautogui的拖拽是基于Windows桌面坐标实现的,另外浏览器中的坐标与windows桌面坐标并不是一比一对应的关系,要把浏览器中的坐标转换成桌面坐标需要考虑的因素比较多,如:屏幕的分辨率、缩放比例、浏览器窗口位置、页面是否有滚动、工具栏高度等,本文不考虑窗口内部滚动的情况,假设下图黑框表示window桌面。原创 2023-09-30 12:55:51 · 636 阅读 · 0 评论 -
打包Python项目
本教程将指导您如何打包一个简单的Python项目。它将 向您展示如何添加必要的文件和结构来创建包,如何 构建包,以及如何将其上传到Python包索引(PyPI)。尖端如果您在运行本教程中的命令时遇到问题,请复制命令 及其输出,然后在存储库上, GitHub.我们会尽力帮助你!原创 2023-12-07 20:15:45 · 507 阅读 · 0 评论