做网站的天津,吉林黄页电话查询,app企业网站模板免费下载,wordpress文章加表格元素相关操作_等待元素到某种状态
对于自动化测试来说#xff0c;本质上就是定位元素、操作元素。网页上的元素有不同状态#xff0c;有些元素本来不在网页的DOM中#xff0c;经过某一步操作后才出现。有些元素是本来就已经在DOM中但是是隐藏的状态#xff0c;经过某一步操…元素相关操作_等待元素到某种状态
对于自动化测试来说本质上就是定位元素、操作元素。网页上的元素有不同状态有些元素本来不在网页的DOM中经过某一步操作后才出现。有些元素是本来就已经在DOM中但是是隐藏的状态经过某一步操作后才变成显示状态。如果在元素的没有达到想要的状态就执行脚本操作元素往往会导致脚本执行失败为了提示自动化测试的稳定性我们往往需要在元素达到某个指定的状态再执行相应的脚本这样自动化测试脚本的稳定性就会得到提升。 如果我们想让元素到达指定的状态再下一步操作有两种方式 一种是使用page.wait_for_selector() 方法。 还有一种是先定位元素再使用wait_for() 方法也可以等待元素到达指定的状态 page.wait_for_selector() 方法 wait_for_selector() 方法部分源码 def wait_for_selector(self,selector: str,*,timeout: typing.Optional[float] None,state: typing.Optional[Literal[attached, detached, hidden, visible]] None,strict: typing.Optional[bool] None) - typing.Optional[ElementHandle]:state 参数可以设置等待状态用四个状态“attached”, “detached”, “hidden”, “visible”。
1.等待元素出现在DOM中
page.wait_for_selector(定位方法, stateattached)2.等待从DOM中移除
page.wait_for_selector(定位方法, statedetached)3.等待元素可见
page.wait_for_selector(定位方法, statevisible)4.等待元素不可见
page.wait_for_selector(“定位方法”, state‘hidden’) 如果没有传 state 参数默认情况下是等待元素可见 visible page.wait_for_selector(“定位方法”)
wait_for_selector()方法 我们以下图中的提示窗口中的确定按钮为例。整个提示窗口默认时不在DOM中的,在点击登录按钮登录失败后系统才会弹出这个提示窗口这个窗口中的元素才会显示在DOM中。我们就以提示窗口中的确定按钮为例看一下wait_for_selector()的使用。 项目实践代码 author: 测试-老姜 交流微信/QQ349940839
欢迎添加微信或QQ加入学习群共同学习交流。
QQ交流群号877498247
from playwright.sync_api import Playwright, sync_playwright, expect
playwright sync_playwright().start()
browser playwright.chromium.launch(headlessFalse, args[--start-maximized]) #默认无头模式,设置浏览器最大化
context browser.new_context(no_viewportTrue) # 创建上下文相当浏览器于实例化即打开浏览器
page context.new_page() # 打开一个新标签页
page.goto(http://127.0.0.1:8080/oa/) # 打开网址
page.wait_for_timeout(2000)
page.locator(input[name\loginId\]).fill(sup)
page.get_by_role(button, name登录).click() #点击登录后会弹出提示信息框
ele page.wait_for_selector([value确定], stateattached) # 等待确定按钮出现
page.wait_for_timeout(2000)
ele.click() # 点击确定后确定按钮会消失
page.wait_for_selector([value确定], statedetached) # 等待确定按钮消失
context.close()
browser.close()如果等不到对应的元素状态默认30秒会报超时异常。也可以自己设置timeout时间 如下设置判断元素5秒内从DOM中移除
page.wait_for_selector([value确定], stateattached,timeout5000)wait_for() 方法 另外一个先定位元素再使用wait_for() 方法也可以等待元素到达指定的状态。 将上面的代码稍作修改就可以了 author: 测试-老姜 交流微信/QQ349940839
欢迎添加微信或QQ加入学习群共同学习交流。
QQ交流群号877498247
from playwright.sync_api import Playwright, sync_playwright, expect
playwright sync_playwright().start()
browser playwright.chromium.launch(headlessFalse, args[--start-maximized]) #默认无头模式,设置浏览器最大化
context browser.new_context(no_viewportTrue) # 创建上下文相当浏览器于实例化即打开浏览器
page context.new_page() # 打开一个新标签页
page.goto(http://127.0.0.1:8080/oa/) # 打开网址
page.wait_for_timeout(2000)
page.locator(input[name\loginId\]).fill(sup)
page.get_by_role(button, name登录).click() #点击登录后会弹出提示信息框
page.locator([value确定]).wait_for(stateattached)# 等待确定按钮出现
page.wait_for_timeout(2000)
page.locator([value确定]).click() # 点击确定后确定按钮会消失
ele page.locator([value确定]).wait_for(statedetached) # 等待确定按钮消失
context.close()
browser.close()wait_for() 方法 和 wait_for_selector()使用区别 • page.locator(‘定位元素’).wait_for() 返回的是None后面不能继续操作元素 • page.wait_for_selector(“定位方法”) 返回的是locator 对象后面可以继续操作元素