17新一代自动化测试神器playwright+python系列课程_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)

  1. 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()

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

posted @ 2024-03-21 10:58  测试_老姜  阅读(106)  评论(0)    收藏  举报