宏哥将按由简入繁,从简单到复杂顺序一一介绍和分享给小伙伴们或者童鞋们。这篇文章就先介绍比较简单方便的方法:By id。...在自动化测试过程中,测试程序通常的操作页面元素步骤找到Web的页面元素,并赋予到一个存储对象中 (WebElement)对存储页面元素的对象进行操作,例如:点击链接,在输入框中输入字符等,验证页面上的元素是否符合预期...Selenium通过在页面上寻找元素位置,找到元素后,然后对元素进行相应的操作,Selenium寻找元素位置的方法,称之为定位。...策略是,选择简单,稳定的定位方法。当页面元素有 id属性的时候,尽量使用 id来定位。没有的话,再选择其他定位方法。cssSelector 执行速度快,推荐使用。...9.定位方法讲解 通过ID定位 例子:探测百度主页输入框 ? 在蓝色区域,查看到id=kw,则可以通过id去定位。
也不推荐使用。...如下图所示:3.可能小伙伴后者童鞋们没有注意宏哥在录屏中点击输入框,通过JavaScript给输入框加入不可操作属性,宏哥在这里演示一下,仍然给输入框输入内容就会报如下错误:element not interactable...5.拓展如果你不想用或者觉得selenium自带的API不能满足你的要求,你也可以根据自己的需要定义一个API,然后进行调用使用。...5.1自定义的API# 自定义方法来判断页面元素是否存在def is_element_present(page, selector): """ 判断指定选择器的元素是否存在于页面上 :..., sync_playwright, expect# 自定义方法来判断页面元素是否存在def is_element_present(page, selector): """ 判断指定选择器的元素是否存在于页面上
方法 语法 描述 id driver.findElement(By.id(String id)) 使用页面元素的id属性 name driver.findElement(By.name(String name...(String css)) 使用CSS选择器定位 3.定位遵循原则 我们在选择使用定位方法的时候,建议遵循以下原则 1.若id和name在html中是唯一的,则优先使用这2种。...css表达式,如下图所示: (3)鼠标置于要定位的元素上->鼠标右键->检查->Elements->Ctrl+F 5.小结 总共有8种方法,但是在实际的运用中,我们一定要合理使用,按以下方法进行选择...使用方法: 1.xpath helper官方文档上介绍的使用方法如下: 打开窗口后,按shift键并移动鼠标至你需要查看的区域即可立即在插件窗口中显示其代码查询结果。...2)按Ctrl-Shift键-X以打开XPath辅助控制台。 3)按住Shift键鼠标在页面上的元素。查询框会不断更新,以显示鼠标指针下面的元素充分XPath查询。结果框其右侧将显示评价结果的查询。
那么我们如何在调试定位的时候就让我们定位到的全部元素都比较直观的展示在我们眼前呢?selenium需要我们逐一去查看,而playwright就直接提供了一个高亮的方法来突出展示web页面上的元素。...3.高亮显示定位到的元素在我们调试元素定位的时候,不知道页面上有多少个此类元素,不清楚页面上这个元素具体显示在什么位置,这时候就可以使用 locator.highlight()。...语法如下:locator.highlight() 4.highlight实战4.1highlight高亮单个元素我们以度娘首页为例:高亮百度的搜索框(搜索框的元素id为kw)。...如下图所示:宏哥讲解和分享的以上方法对于我们调试元素定位,是不是炒鸡方便?4.3元素匹配器 - nth将定位器返回到第n个元素。下标是从0开始的。nth(0)表示选择第一个元素。...如下图所示:5.小结今天主要讲解和介绍了在代码调试阶段使用highlight()方法使得元素高亮显示,帮助我们定位调试代码是否有问题,灵活使用高亮显示,可以提高我们的工作效率!
您还可以按文本进行筛选,这在尝试在列表中定位特定项目时很有用。3.5替代文本定位-page.get_by_alt_text()所有图像都应该有一个alt描述图像的属性。...您可以通过它的测试 ID 定位到该元素:page.get_by_test_id("directions").click()3.7.1何时使用测试id定位器当你选择使用测试id的方法,或者角色、文本无法定位时...5.文本选择器定位-text()文本选择器是一个非常实用的定位方式,根据页面上看到的text文本就可以定位了,比如我们经常使用xpath 的文本选择器定位。...page.fill("id=kw", "北京-宏哥")7.select选择器组合定位定位目标元素,我们有时候可以使用>>(两个大于号)连接不同的selector可组合使用,例如:我们定位百度首页的登录#....小结今天这一篇主要是讲解我们日常工作中在使用Playwright进行元素定位的一些比较常用的定位方法的理论基础知识以及在什么情况下推荐使用,当然了这不是一成不变的,希望大家在使用中可以灵活的应用。
1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等。所以宏哥打算按上传文件的分类对其进行一下讲解和分享。...2.为什么selenium没有提供API?...想必小伙伴们或者童鞋们一定很好奇,既然上传文件在自动化这么常见而且经常用到,那么为什么Selenium的webdriver为什么不提供方法(API),宏哥这里解释一下原因:因为上传文件需要打开window...大多数情况都是input控件上传文件,只有非常少数的使用自定义的非input上传文件。今天宏哥这一篇文章就用来介绍非input控件上传文件。...宏哥利用Robot的大致流程是这样的: 1.用selnium点击web上本地上传文件的按钮 2.在弹窗,文件路径输入框默认是光标聚焦,我们把文件在磁盘上的路径,通过拷贝和黏贴方法写上去。
所以宏哥打算按上传文件的分类对其进行一下讲解和分享。...除了测试功能之外,Playwright还提供了一些实用工具和API,其中包括文件上传和下载的功能。这些功能可以帮助用户模拟用户上传或下载文件的场景,并验证这些操作是否按预期执行。...大多数情况都是input控件上传文件,只有非常少数的使用自定义的非input上传文件。今天宏哥这一篇文章就用来介绍input控件上传文件。...使用过程就是先定位到选择文件按钮,然后调用set_input_files()方法,传入上传文件路径就可以将文件添加到选择文件旁边的输入框中,点击上传按钮就可以实现文件上传了。...思路1.定位到选择文件的输入框2.找到这个输入框元素后使用sendKeys()的方法将你所需上传文件的绝对路径名输入进去,就达到了选择文件的目的。
1.简介 在日常工作和学习中,自动化测试的时候:在加载页面时,可能页面出现很多不是很重要或者不是我们所关注的,这个时候我们就可以选择不加载这些内容,以提高页面加载速度,节省资源。...例如:可能页面上图片比较多,而我们又不关心图片内容。那么,在加载页面时,可以选择不加载图片,以提高页面加载速度。这里我们主要用到一个Route类拦截修改请求 。...2.Route类语法 Route类介绍官方API的文档地址:https://www.cuketest.com/playwright/docs/api/class-route/ 在Playwright中,...3.1continue `route.continue(): Promise` - 继续请求,使其按正常流程继续发送并接收响应。...宏哥这里以这个dog的API:https://dog.ceo/api/breeds/list/all 为例,判断开头部分URL如果相同继续请求返回数据,如果不同则不会执行继续请求的操作。
1.简介 在日常工作和学习中,自动化测试的时候:在加载页面时,可能页面出现很多不是很重要或者不是我们所关注的,这个时候我们就可以选择不加载这些内容,以提高页面加载速度,节省资源。...例如:可能页面上图片比较多,而我们又不关心图片内容。那么,在加载页面时,可以选择不加载图片,以提高页面加载速度。这里我们主要用到一个Route类拦截修改请求 。...2.Route类语法Route类介绍官方API的文档地址:https://www.cuketest.com/playwright/docs/api/class-route/在Playwright中,Route...3.1continue`route.continue(): Promise` - 继续请求,使其按正常流程继续发送并接收响应。...宏哥这里以这个dog的API:https://dog.ceo/api/breeds/list/all 为例,判断开头部分URL如果相同继续请求返回数据,如果不同则不会执行继续请求的操作。
1.简介前边的三篇文章基本上对文件上传的知识介绍和讲解的差不多了,今天主要是来分享宏哥在文件上传的实际操作中发现的一个问题:input控件和非input控件的上传API对其都可以上传成功。...准备条件,你在百度图片搜索一个图片,保存到你桌面,例如宏哥找到一个关于selenium的图片,然后保存在桌面的test文件夹,名称为北京宏哥的拼音首字母:bjhg.jpeg。...首先宏哥按我们常规思路:非input控件上传文件。...如下图所示:5.总结分析input控件API上传成功和非input控件API上传成功的原因是:宏哥刚好定位的是input控件,而且这个input控件点击后会弹出文件选择对话框事件,所有两种方法都可以。...宏哥这里就不做演示了,有兴趣的可以自己实践一下。7.小结 这一篇主要是介绍一下宏哥在文件上传的实践过程中遇到的一个小插曲,以及为啥会出现这个小插曲的原因。其实搞明白了也很简单的。
而在方法的声明中,我们还可以使用不带下划线的nullable和nonnull,如下所示: - (nullable id)itemWithName:(NSString * nonnull)name 在属性声明中...例如,指定一个指向nullable对象的nonnull指针,可以使用” __nullable id * __nonnull 我们经常使用的NSError **通常是被假定为一个指向nullable NSError...NS_ENUM_AVAILABLE_IOS 从单词的字面可以看出使用这个宏说明这个枚举开始IOS的版本 IOS版本如下 7_0 代表7.0的版本.用_替换 参数只有一个NS_ENUM_AVAILABLE_IOS...UIResponder NS_EXTENSION_UNAVAILABLE_IOS 标记IOS插件不能使用这些API,后面有一个参数,可以作为提示,用什么API替换 例子 + (UIApplication...(有待考证) SDK_HIDE_TIDE 暂定 没查到干什么的 字面上是在SDK隐藏 NS_DESIGNATED_INITIALIZER 用来定义一些初始化方法只能过来这些标记的初始化
04.密文显示宏变量值 在 Zabbix 5.0 中,现在支持在前端密文显示宏变量。只需通过下拉列表选择"Secret text"类型的宏 。...现在,您可以选择不显示宏变量的值,例如,如果您需要对其他Zabbix管理员隐藏宏变量的值,可以使用该功能。 ?...密文显示敏感的宏值 如果在主机或模板的克隆操作时,该主机或模板使用了"Secret text"类型的宏,那么宏变量的值将被重置,同时可以在前端页面上看到以下警告信息: ?...10.auditlog.get 在Zabbix 5.0中,我们添加了新的审计日志对象和auditlog.get方法,现在可以通过API来获取审核日志。这看起来像是拼图中缺失的一块。 ?...当然,也能够让您更进一步进行筛选和排序: 可以按audit IDs与/或user IDs进行筛选。 能够按旧值和新值进行搜索。
(1)按快捷键Win + R,调出运行窗口,输入regedit,按回车,进入注册表编辑器界面。 (2) 在注册表编辑器界面,找到.xlsm所在位置。...路径:计算机\HKEY_CLASSES_ROOT.xlsm (3)在.xlsm文件夹上点击右键,依次选择新建、项,并重命名为:shellnew。...(4)在新建的shellnew文件夹上点击右键,依次选择新建、字符串值,并重命名为:FileName。...(7)在桌面上新建一个空的启用宏的工作簿,将其重命名为:Excel14M.xlsm,然后将该文件移动到以下路径的文件夹中:C:\Program Files\Microsoft Office\root\vfs...在桌面上点击右键,选择新建,此时可以看到在可选项中已经有了启用宏的工作簿。
1.简介上一篇中,主要是介绍了拖拽的各种方法的理论知识以及实践,今天宏哥讲解和分享一下划取字段操作。例如:需要在一堆log字符中随机划取一段文字,然后右键选择摘取功能。...2.划取字段操作划取字段操作就是在一段文字中随机选中一段文字,或者在标记文字。当然了,这个在一些网站的登录也需要滑块验证等。selenium中提供了ActionChains类来处理鼠标事件。...今天跟随宏哥看一下,playwright是如何处理这种测试场景的。2.1牛刀小试在一段文字中,随机划取一小段文字(这个感觉比较鸡肋,貌似没有什么卵用,但是宏哥还是说一下吧)。...那么宏哥就用度娘的免责声明进行实践,划取其中的一小段文字。使用locator.drag_to()执行拖放操作,实现自动化测试。...反爬虫检测机制,但是还是会出现那个选择字的验证。
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath。xpath 的定位方法, 非常强大。...使用这种方法几乎可以定位到页面上的任意元素。 2.什么是xpath?...在实际使用中,如果元素经常有新增或减少的情况,不建议使用索引号定位的方式,因为页面的变化会导致使用索引号的XPath表达式定位失败。...2.运行代码后电脑端的浏览器的动作,如下小视频所示: 在定位页面元素的时候,会遇到各种结构复杂的网页,并且经常出现无法使用ID,name等方式进行定位。...@id='su']精准定位到id属性为'su'的标签 xpath= "//span[@id='s_kw_wrap']/following::input[@id='su']" 按上边的方法
),如下小视频所示: 3.可能小伙伴后者童鞋们没有注意宏哥在录屏中点击输入框,通过JavaScript给输入框加入不可操作属性,宏哥在这里演示一下,仍然给输入框输入内容就会报如下错误:element not...6.拓展 如果你不想用或者觉得selenium自带的API不能满足你的要求,你也可以根据自己的需要定义一个API,然后进行调用使用。...6.1自定义的API //自定义一个判断页面元素是否存在的函数或者方法IsElementPresent private boolean IsElementPresent(By by){ try{...则将此测试用例的设置为失败状态 //打印失败原因 Assert.fail("页面上的输入框元素未被找到!")...则将此测试用例的设置为失败状态 //打印失败原因 Assert.fail("页面上的输入框元素未被找到!")
依然使用三色LED,同时板上还有一个按键。所以这里实现一个按键控制LED闪烁开关的程序。按一下按键,LED开始闪烁,再按一下,停止闪烁,并熄灭。...然后是硬件定时器的使用,使用方法也很简单,共分3步: 1、选择中断源,选择定时器是否自动填充 hw_timer_init(0,1); 该函数共有两个参数:...参数1:选择中断源。...熄灭的时候,定时器依然在跑,只是管脚始终都拉低了。有人会问,你把定时器关掉不行吗?弄这么麻烦?...由于空间有限,无法将所有代码都一次性加载到 IRAM 中运行,因此在大部分函数前添加 "ICACHE_FLASH_ATTR" 宏,放在 IROM 中。
Clojure的contrib包中实现了对现有JDBC的封装,在wiki上有连接,该页面上包含了对不同的数据库的连接方法和基本的操作,但是这个页面上没有提供足够的信息,足够一个初学者能够使用Clojure...接着,在需要使用sql库的地方要导入这些库 在ns宏中加载如下内容:(:use [clojure.contrib.sql :as sql :only ()]),这样在本文件中就可以直接使用sql作为前缀...接下来我们主要描述几个常用API的格式,具体的内容可以参考手册。...defn drop-user [] (try (sql/drop-table :fruit) (catch Exception _))) 4, with-query-results 选择查询的数据...id] attribute-map)) 6, 删除行 (sql/delete-rows :user ["id=?"
1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等。所以宏哥打算按上传文件的分类对其进行一下讲解和分享。...想必小伙伴们或者童鞋们一定很好奇,既然上传文件在自动化这么常见而且经常用到,那么为什么Selenium的webdriver为什么不提供方法(API),宏哥这里解释一下原因:因为上传文件需要打开window...大多数情况都是input控件上传文件,只有非常少数的使用自定义的非input上传文件。今天宏哥这一篇文章就用来介绍input控件上传文件。...示例代码: driver.findElement(By.id("attachment")).sendKeys("D:\\test.txt"); 5.项目实战 宏哥找了好久没有找到,宏哥就参照网上的input...思路 1.定位到选择文件的输入框 2.找到这个输入框元素后使用sendKeys()的方法将你所需上传文件的绝对路径名输入进去,就达到了选择文件的目的。
领取专属 10元无门槛券
手把手带您无忧上云