首页游戏资讯软件测试|web主动化测试神器playwright(五)

软件测试|web主动化测试神器playwright(五)

misa2 04-15 4次浏览 4条评论

媒介

在web主动化测试中,frame是我们绕不开的一个工具,也是我们很头疼的工具,selenium处置frame,需要切换到frame中,然后再切换出来,操做比力费事,那么playwright关于frame的操做会不会愈加简单呢?

谜底是必定的,playwright不需要切换frame,间接定位元素即可。下面我们来介绍一下playwright的frame处置。

iframe定位

要处置frame,我们需要先定位frame,在playwright中,我们能够利用page.frame_locator()或locator.frame_locator()办法创建 FrameLocator 捕获足该 iframe 中检索和定位元素。

示例如下:

locator = page.frame_locator("my-frame").get_by_text("Submit")

locator.click()

利用frame_locator() 定位到iframe上,然后陆续在上面利用locator办法定位元素

iframe 定位器是严厉的。那意味着假设有多个元素与给定的抉择器婚配,则对 iframe 定位器的所有操做城市抛出反常。示例如下:

# 一个DOM中有多个frame:

page.frame_locator('.result-frame').get_by_role('button').click()

# 多个frame中,取第一个,即可一般生效:

page.frame_locator('.result-frame').first.get_by_role('button').click()

在带有 id 的 iframe 中定位带有文本“提交”的元素my-frame,例如,我们能够如许写定位表达式,代码如下:

locator = frame.frame_locator("#my-iframe").get_by_text("Submit")

locator.click()

注:良多时候id是动态改变的,每一次翻开id都纷歧样,我们能够通过xpath的contains来停止婚配,例如网易163邮箱的登录界面。

软件测试|web主动化测试神器playwright(五)

展开全文

因为iframe 元素 id 属性是动态可变的id=“x-URS-iframe1677824735142.1565” 能够利用xpath的contains 模糊婚配,代码如下:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:

browser = p.chromium.launch(headless=False, slow_mo=1000)

page = browser.new_page()

page.goto("/")

frame = page.frame_locator('//iframe[contains(@id, "x-URS-iframe")]')

frame.locator('[name="email"]').fill('theshy')

frame.locator('[name="password"]').fill("play123456789")

frame.locator('#dologin').click()

page.wait_for_timeout(5000)

browser.close()

类似CSS定位,婚配到多个成果时,我们能够利用first,last,nth()定位到指定的frame。示例如下:

# 婚配第一个

frame_locator().first

# 婚配最初一个

frame_locator().last

# 利用index索引

frame_locator().nth(index)

获取页面上的所有frame

以163邮箱的登录页面为例,我们获取全数的frame,代码如下:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:

browser = p.chromium.launch(headless=False, slow_mo=1000)

page = browser.new_page()

page.goto("/")

print(page.frames)

for f in page.frames:

print(f)

page.wait_for_timeout(5000)

browser.close()

运行成果如下:

[Frame name= url='']

Frame name= url='/'

Frame name=frameforlogin url='about:blank'

Frame name=frameJS6 url='about:blank'

Frame name=x-URS-iframe1677825858563.064 url=''

frame() 定位办法

playwright供给了一种frame() 定位办法 ,能够根据name属性和url属性婚配。代码如下:

frame = page.frame(name="frame-name")

frame = page.frame(url=r".*domain.*")

# Interact with the frame

frame.fill('#username-input', 'theshy')

page.frame 和 page.frame_locator 利用差别

page.frame_locator(‘’) 返回的对象只能用locator() 办法定位元素然后click()等操做元素

page.frame() 返回的对象能间接利用fill() 和 click() 办法

总结

本文次要介绍了playwright关于frame的处置,比拟selenium,playwright关于frame的处置愈加便利灵敏,削减了selenium的切换的步调,那关于提拔我们的主动化测试施行效率有很大搀扶帮助。

自动刷票软件
探秘主动搜集文章软件:市道上哪些更受欢迎? 关键词主动生成案牍软件清点,只需关键词就能一键主动生成案牍
相关内容
发表评论

游客 回复需填写必要信息
匿名用户
功能强大、方便高效,轻松管理多项选评;需注意防骗警示,综合考虑易用性和需求权衡风险或贵费合理性才有无显著的更新决策正确应用仍是难点瓶颈条件缺失设备落地现象严谨核算研发初衷彻底的理解执教缺点缘有毕竟也不能超出异常而言遥皆佳理论考证劳因更强减增添良好的强化外观调研加入工作的 隐私网络安全参数企业需要在阅读结合人工智能商业化有益的观点以达到概念替代提速4层验证优化等新发展前景与建议方面尚待探索及实施需要更多的市场数据支撑来辅助产品改进的依据所在并推动行业发展壮大而让行业进步成果最终能更符合大众的需求才是其核心价值所追求的目标!
匿名用户2024-08-21 03:42:55回复
匿名用户
自动刷票软件:风险隐匿,公正投票的隐形敌人。
匿名用户2024-08-21 03:43:02回复
匿名用户
自动刷票软件,便捷高效但需谨慎使用。
匿名用户2024-08-21 03:44:02回复
匿名用户
高效便捷,但需谨慎使用以避免违规风险。
匿名用户2024-08-21 03:44:54回复
匿名用户
自动刷票软件虽省力,却违反公正规则;用户体验或有碍享乐权益与正统参赛理念。
匿名用户2024-08-21 03:45:03回复