《最新出炉》系列初窥篇-Python+Playwright自动化测试-59 - 判断元素是否显示 - 上篇
1.简介
有些页面元素的生命周期如同流星一闪,昙花一现。我们也不知道这个元素在没在页面中出现过,为了捕获这一美好瞬间,让其成为永恒。我们就来判断元素是否显示出现过。
在操作元素之前,可以先判断元素的状态。判断元素操作状态也可以用于断言。
2.常用的元素判断方法
2.1page对象调用的判断方法
page对象调用的判断方法, 传一个selector 定位参数
- page.is_checked(selector: str) # checkbox or radio 是否选中
- page.is_disabled(selector: str) # 元素是否可以点击或编辑
- page.is_editable(selector: str) # 元素是否可以编辑
- page.is_enabled(selector: str) # 是否可以操作
- page.is_hidden(selector: str) # 是否隐藏
- page.is_visible(selector: str) # 是否可见
2.2locator对象调用的判断方法
locator对象调用的判断方法
- locator.is_checked()
- locator.is_disabled()
- locator.is_editable()
- locator.is_enabled()
- locator.is_hidden()
- locator.is_visible()
2.3元素句柄的判断方法
元素句柄的判断方法
- element_handle.is_checked()
- element_handle.is_disabled()
- element_handle.is_editable()
- element_handle.is_enabled()
- element_handle.is_hidden()
- element_handle.is_visible()
元素句柄(element_handle)是通过page.query_selector()方法调用返回的ElementHandle ,这种一般不常用。也不推荐使用。
3.项目实战
在自动化测试中,我们经常需要进行判断的一个场景。例如,有些操作,我们做了之后,会触发一些提醒,有些是正确的提醒,有些是红色字体显示的错误提示。我们自动化里面如何去捕获这些字段,如果进行测试自动化判断呢。这里就要用到今天所学习的方法了。宏哥这里用度娘的首页登录举例,判断“请填写验证码”这个字段是否出现。
3.1测试用例(思路)
1.访问度娘首页
2.定位首页的登录按钮,然后点击
3.弹出登录框定位短信登录按钮,然后点击
4.定位手机号输入框,然后输入手机号
5.定位协议,然后点击
6.定位登录框的登录按钮,然后点击
7.定位出现的“请填写验证码”,然后判断。
3.2代码设计
按照宏哥在Selenium教程中的代码思路:
3.3参考代码
# coding=utf-8🔥 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 # 2.注释:包括记录创建时间,创建人,项目名称。 ''' Created on 2024-05-09 @author: 北京-宏哥 公众号:北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!) Project: 《最新出炉》系列初窥篇-Python+Playwright自动化测试-59 - 判断元素是否显示 ''' # 3.导入模块 from playwright.sync_api import Playwright, sync_playwright, expect def run(playwright: Playwright) -> None: browser = playwright.chromium.launch(headless=False) context = browser.new_context() page = context.new_page() page.goto("https://www.baidu.com/") # 定位首页的登录按钮,然后点击登录 page.locator("//*[@id='u1']/a[1]").click() page.wait_for_timeout(300) # 弹出登录框定位短信登录按钮,然后点击 page.locator("#TANGRAM__PSP_11__changeSmsCodeItem").click() # 定位手机号输入框,然后输入手机号 page.locator("#TANGRAM__PSP_11__smsPhone").type("13734294156") # 定位同意协议点击 page.locator("#TANGRAM__PSP_11__smsIsAgree").click() # 定位登录框的登录按钮,然后点击 page.locator("#TANGRAM__PSP_11__smsSubmit").click() error_message = page.locator("//*[@id='TANGRAM__PSP_11__smsError' and text()='请填写验证码']") if error_message.is_visible(): print("宏哥!元素存在") else: print("宏哥!元素不存在") page.wait_for_timeout(1000) print("browser will be close"); page.close() context.close() browser.close() with sync_playwright() as playwright: run(playwright)
3.4运行代码
1.运行代码,右键Run'Test',就可以看到控制台输出,如下图所示:
2.运行代码后电脑端的浏览器的动作。如下图所示:
4.方法二
第二个方法,就是先得到这个字符串用String变量保存下来,然后对两个字符串进行比较。其实这种方法前边已经用过,只不过是宏哥没有指出,就像前边文章中的toast元素,直接定位存储在变量里,然后将其的文本打印出,是不是啊各位小伙伴们或者童鞋们。
4.1代码设计
4.2参考代码
# coding=utf-8🔥 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 # 2.注释:包括记录创建时间,创建人,项目名称。 ''' Created on 2024-05-09 @author: 北京-宏哥 公众号:北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!) Project: 《最新出炉》系列初窥篇-Python+Playwright自动化测试-59 - 判断元素是否显示 ''' # 3.导入模块 from playwright.sync_api import Playwright, sync_playwright, expect def run(playwright: Playwright) -> None: browser = playwright.chromium.launch(headless=False) context = browser.new_context() page = context.new_page() page.goto("https://www.baidu.com/") # 定位首页的登录按钮,然后点击登录 page.locator("//*[@id='u1']/a[1]").click() page.wait_for_timeout(300) # 弹出登录框定位短信登录按钮,然后点击 page.locator("#TANGRAM__PSP_11__changeSmsCodeItem").click() # 定位手机号输入框,然后输入手机号 page.locator("#TANGRAM__PSP_11__smsPhone").type("13734294156") # 定位同意协议点击 page.locator("#TANGRAM__PSP_11__smsIsAgree").click() # 定位登录框的登录按钮,然后点击 page.locator("#TANGRAM__PSP_11__smsSubmit").click() error_message = page.locator("//*[@id='TANGRAM__PSP_11__smsError' and text()='请填写验证码']").inner_text() if error_message=="请填写验证码": print("宏哥!元素存在") else: print("宏哥!元素不存在") page.wait_for_timeout(1000) print("browser will be close"); page.close() context.close() browser.close() with sync_playwright() as playwright: run(playwright)
4.3运行代码
1.运行代码,右键Run'Test',就可以看到控制台输出,如下图所示:
2.运行代码后电脑端的浏览器的动作。如下图所示:
5.小结
好了,今天时间也不早了,关于判断元素是否显示就介绍到这里,感谢您耐心的阅读!!!
感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下左下角“推荐”按钮,您的
本文版权归作者和博客园共有,来源网址:https://www.cnblogs.com/du-hong 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!
公众号(关注宏哥)                                                                                 客服微信