【playwright】新一代自动化测试神器playwright+python系列课程17_playwright元素相关操作_元素状态判断

我们在自动化测试中,有时需要判断元素是否可见或者是否可以点击,这些元素状态也可以用于断言中,playwright提供了多个方法用于获取元素的各种状态,以便用于我们的后续操作或者断言中。本篇文章就来给大家介绍一下playwright对元素状态的判断。
常见的元素状态判断方法

is_checked(selector: str) # checkbox or radio 是否选中
is_disabled(selector: str) # 元素是否可以点击或编辑
is_editable(selector: str) # 元素是否可以编辑
is_enabled(selector: str) # 是否可以操作
is_hidden(selector: str) # 是否隐藏
is_visible(selector: str) # 是否可见

playwright提供了3种方式去获取元素状态并进行判断,分别是page对象调用判断方法,locator对象调用判断方法,还有元素句柄判断方法**(元素句柄(element_handle)是通过page.query_selector()方法调用返回的ElementHandle ,这种方法不常用,本文不做讲解)。**

1. page对象调用的判断方法, 传一个selector 定位参数

page.is_checked(selector: str) 
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. locator 对象调用的判断方法

locator.is_checked()
locator.is_disabled()
locator.is_editable()
locator.is_enabled()
locator.is_hidden()
locator.is_visible()

is_checked() 用于判断checkbox or radio 的状态是否被选中。我们以下图中的复选框为例,看一下勾选前后它is_checked()的应用。

在这里插入图片描述

项目实践代码

'''
author: 测试-老姜   交流微信/QQ:349940839
欢迎添加微信或QQ,加入学习群共同学习交流。
QQ交流群号:877498247
'''

from playwright.sync_api import Playwright, sync_playwright, expect
playwright = sync_playwright().start()
browser = playwright.chromium.launch(headless=False, args=['--start-maximized']) #默认无头模式,设置浏览器最大化
context = browser.new_context(no_viewport=True) # 创建上下文,相当浏览器于实例化,即打开浏览器
page = context.new_page() # 打开一个新标签页
page.goto("http://127.0.0.1:8080/oa/") # 打开网址
page.locator("input[name=\"loginId\"]").fill("sup")
password_input = page.locator("input[name=\"password\"]")
password_input.fill("s1234567")
page.wait_for_timeout(2000)
t = password_input.input_value()
print(t)
page.get_by_role("button", name="登录").click()
page.wait_for_timeout(2000)
page.locator('text=已发事项').click()
frame = page.frame_locator("iframe[name=\"iframe_main\"]").frame_locator("frame[name=\"listframe\"]")
v = frame.get_by_title('123414').get_attribute('onclick') # 获取onclick属性值
print(v)
import re
v = re.findall('"(.+?)",',v)[0]
check_Box = frame.locator(f'[value="{v}"]') # 定位复选框
r = check_Box.is_checked() #判断复选框是否被选中
print(r) #此时复选框没有被选中,打印为False
check_Box.click() # 点击复选框,复选框选中
page.wait_for_timeout(3000)
r = check_Box.is_checked()#判断复选框是否被选中
print(r)#此时复选框被选中,打印为True
page.wait_for_timeout(2000)
context.close()
browser.close()

is_visible()判断元素是否可见,我们以这个提示信息的关闭按钮为例,分别看一下这个元素在关闭前和关闭后is_visible()的判断结果。
在这里插入图片描述

项目实践代码

'''
author: 测试-老姜   交流微信/QQ:349940839
欢迎添加微信或QQ,加入学习群共同学习交流。
QQ交流群号:877498247
'''

from playwright.sync_api import Playwright, sync_playwright, expect
playwright = sync_playwright().start()
browser = playwright.chromium.launch(headless=False, args=['--start-maximized']) #默认无头模式,设置浏览器最大化
context = browser.new_context(no_viewport=True) # 创建上下文,相当浏览器于实例化,即打开浏览器
page = context.new_page() # 打开一个新标签页
page.goto("http://127.0.0.1:8080/oa/") # 打开网址
page.locator("input[name=\"loginId\"]").fill("sup")
page.get_by_role("button", name="登录").click()
page.wait_for_timeout(2000)
ele = page.locator('.d-close') 
r = ele.is_visible() # locator对象调用案例,关闭按钮显示着,打印结果为True
print(r)
r = page.is_visible('.d-close') # page对象调用使用案例,关闭按钮显示着,打印结果为True
print(r)
page.wait_for_timeout(2000) #关闭提示窗口
ele.click()
r = ele.is_visible() # locator对象调用案例,提示窗口关闭,关闭按钮不显示,打印结果为False
print(r)
r = page.is_visible('.d-close') # page对象调用使用案例,关闭按钮显示着,打印结果为True
print(r)
page.wait_for_timeout(2000)
context.close()
browser.close()

is_editable() 判断元素是否可以编辑,我们以登录页面的用户名输入框为例看一下is_editable()的应用。
项目实践代码

'''
author: 测试-老姜   交流微信/QQ:349940839
欢迎添加微信或QQ,加入学习群共同学习交流。
QQ交流群号:877498247
'''

from playwright.sync_api import Playwright, sync_playwright, expect
playwright = sync_playwright().start()
browser = playwright.chromium.launch(headless=False, args=['--start-maximized']) #默认无头模式,设置浏览器最大化
context = browser.new_context(no_viewport=True) # 创建上下文,相当浏览器于实例化,即打开浏览器
page = context.new_page() # 打开一个新标签页
page.goto("http://127.0.0.1:8080/oa/") # 打开网址
loc = page.locator("input[name=\"loginId\"]")
r = loc.is_editable() # 用户名输入框可以编辑,打印结果为True
print(r)
loc.fill("sup")
page.wait_for_timeout(2000)
context.close()
browser.close()

其他元素状态判断的方法使用都是一样的,就不再一一举例了。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值