首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

《最新出炉》系列初窥篇-Python+Playwright自动化测试-60 - 判断元素是否显示 - 下篇

编程知识
2024年07月31日 15:10

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.定位出现的“请填写验证码”,然后判断。

上一篇讲解的方法还是传统方式的判断,今天看一下新方法的判断。

4.page对象调用的判断方法

4.1代码设计

4.2参考代码

# coding=utf-8🔥

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2024-05-09
@author: 北京-宏哥
公众号:北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: 《最新出炉》系列初窥篇-Python+Playwright自动化测试-60 - 判断元素是否显示-下篇
'''

# 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()
    # 判断元素是否出现显示(显示打印True,不显示打印False)
    print(page.is_visible("//*[@id='TANGRAM__PSP_11__smsError' and text()='请填写验证码']"))
    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.locator 定位后判断元素

5.1代码设计

5.2参考代码

# coding=utf-8🔥

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2024-05-09
@author: 北京-宏哥
公众号:北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: 《最新出炉》系列初窥篇-Python+Playwright自动化测试-60 - 判断元素是否显示-下篇
'''

# 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()
    # 判断元素是否出现显示(显示打印True,不显示打印False)
    print(page.locator("//*[@id='TANGRAM__PSP_11__smsError' and text()='请填写验证码']").is_visible())
    page.wait_for_timeout(1000)
    print("browser will be close");
    page.close()
    context.close()
    browser.close()
with sync_playwright() as playwright:
    run(playwright)

5.3运行代码

1.运行代码,右键Run'Test',就可以看到控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作。如下图所示:

6.小结

好了,今天时间也不早了,关于判断元素是否显示就介绍到这里,感谢您耐心的阅读!!!

From:https://www.cnblogs.com/du-hong/p/18155727
本文地址: http://www.shuzixingkong.net/article/638
0评论
提交 加载更多评论
其他文章 DNS在架构中的使用
1 介绍 DNS(Domain Name System,域名系统)是一种服务,它是域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址数串。 简单来说,DNS就是一个将我们输入的网址(比如www.baidu.com )转换成对应的IP地址(比
DNS在架构中的使用 DNS在架构中的使用 DNS在架构中的使用
加油,为Vue3提供一个可媲美Angular的ioc容器
Vue3完全胜任大型业务系统的开发。但是,我们不仅要能做到,而且要做得更好。大型业务系统的关键就是解耦合,从而减缓shi山代码的生长。而ioc容器是目前最好的解耦合工具。
概述C#中各种类型集合的特点
在C#中,集合是用于存储和操作一组数据项的数据结构。这些集合通常位于 System.Collections 和 System.Collections.Generic 命名空间中。下面我将概述C#中几种常用的集合类型及其特点: 1. System.Collections 命名空间中的集合 这个命名空间
概述C#中各种类型集合的特点
结合拦截器描述mybatis启动流程
简介 mybatis的启动入口一般有两个,在结合spring框架后由spring整合包下的SqlSessionFactoryBean启动 如果没有整合spring,则有XMLConfigBuilder启动 这两个启动入口都会初始化Configuration对象,该对象是mybatis配置文件的对象形
结合拦截器描述mybatis启动流程
SSH Exporter:基于Prometheus的远程系统性能监控神器
SSH Exporter English | 中文 介绍 SSH Exporter 是一个基于 Prometheus 规范的监控工具,通过 SSH 协议远程收集目标服务器的系统性能数据,如 CPU 使用率、内存使用情况、磁盘和网络 I/O 等,并将这些数据暴露为 Prometheus 格式的 met
全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用
在Python中,断言是一种常用的调试工具,它允许程序员编写一条检查某个条件。本文主要介绍了断言的应用场景和特点以及assert语句的使用,同时介绍了防御性编程和help()函数。
全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用 全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用 全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用
RPC和 HTTP协议
RPC 和HTTP 的区别 服务发现 HTTP,知道服务域名,可以通过 DNS 解析 得到 服务的IP地址,从而进行访问 RPC 需要一个专门的中间服务去保存服务名和IP信息(注册中心,nacos、consul),想要访问某个服务,就得同时注册到 中间服务,然后获取需要顶用服务的IP 和端口信息 底
架构演化思考总结(2)
架构演化思考总结(2) ​ —-–从命令模式中来探索处理依赖关系 在正式引入命令模式的概念之前,我们先从简单的案例来逐步演化大家在书面上常见到的内容。 public interface ICommand { void Execute(); } public class PlayMusicComman
架构演化思考总结(2)