【playwright】新一代自动化测试神器playwright+python系列课程12_playwright_frame中元素定位

这篇具有很好参考价值的文章主要介绍了【playwright】新一代自动化测试神器playwright+python系列课程12_playwright_frame中元素定位。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Playwright frame中元素定位

网页中经常嵌套frame框架,在网页中标签为iframe或frame的元素就是frame框架
如图
【playwright】新一代自动化测试神器playwright+python系列课程12_playwright_frame中元素定位,自动化测试神器playwright+python使用教程,python,selenium,appium,playwright,自动化测试

或者
【playwright】新一代自动化测试神器playwright+python系列课程12_playwright_frame中元素定位,自动化测试神器playwright+python使用教程,python,selenium,appium,playwright,自动化测试

在frame框架中的元素时不能直接定位的,selenium处理frame,需要切换到frame中,然后再切换出来,操作比较麻烦,那么playwright对于frame的操作会不会更加简单呢?

答案是肯定的,playwright不需要切换frame,直接定位元素即可。下面我们来介绍一下playwright的frame处理。

iframe定位

要处理frame,我们需要先定位frame,在playwright中,我们可以使用page.frame_locator()或locator.frame_locator()方法创建 FrameLocator 捕获足该 iframe 中检索和定位元素。

示例如下:

page.frame_locator("my-frame").get_by_text("Submit").click()

使用frame_locator() 定位到iframe上,然后继续在上面使用locator方法定位元素

iframe 定位器是严格的。这意味着如果有多个元素与给定的选择器匹配,则对 iframe 定位器的所有操作都会抛出异常。示例如下:

一个DOM中有多个frame:
多个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()

当匹配到多个结果时,我们可以使用first,last,nth()定位到指定的frame。示例如下:

匹配第一个

frame_locator().first

匹配最后一个

frame_locator().last

使用index索引

frame_locator().nth(index)

获取页面上的所有frame

frame() 定位方法
playwright提供了一种frame() 定位方法 ,可以根据name属性和url属性匹配。代码如下:

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

page.frame 和 page.frame_locator 使用差异:

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

page.frame() 返回的对象能直接使用fill() 和 click() 方法

# '''
# author: 测试-老姜   交流微信/QQ:349940839
# 欢迎添加微信或QQ,加入学习群共同学习交流。
# QQ交流群号:877498247
# 西安的朋友欢迎当面交流。
# '''


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("http://127.0.0.1/")
    page.get_by_role("link", name="开源版").click()
    page.locator("#account").click()
    page.locator("#account").fill("admin")
    page.locator("input[name=\"password\"]").click()
    page.locator("input[name=\"password\"]").fill("Deshifuzhi01")
    page.get_by_role("button", name="登录").click()
    page.locator("a").filter(has_text=re.compile(r"^测试$")).click()
    page.frame_locator("iframe[name=\"app-qa\"]").get_by_role("link", name="Bug").click()
    page.frame_locator("iframe[name=\"app-qa\"]").get_by_role("link", name=" 提Bug").click()
    page.frame_locator("iframe[name=\"app-qa\"]").get_by_role("cell", name="影响版本 创建发布  所有 *").locator("div").nth(2).click()
    page.frame_locator("iframe[name=\"app-qa\"]").get_by_title("主干").click()
    page.frame_locator("iframe[name=\"app-qa\"]").locator("input[name=\"title\"]").click()
    page.frame_locator("iframe[name=\"app-qa\"]").locator("input[name=\"title\"]").fill("weet")
    page.frame_locator("iframe[name=\"app-qa\"]").get_by_role("button", name="保存", exact=True).click()

    # ---------------------
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

总结
本文主要介绍了playwright对于frame的处理,相比selenium,playwright对于frame的处理更加方便快捷,减少了selenium的切换的步骤,这对于提升我们的自动化测试执行效率有很大帮助。文章来源地址https://www.toymoban.com/news/detail-799616.html

到了这里,关于【playwright】新一代自动化测试神器playwright+python系列课程12_playwright_frame中元素定位的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023 WAIC | 自然机器人向全球传递新一代智能自动化之声

    2023年7月6日-7月8日,备受瞩目的“2023世界人工智能大会”在上海世博中心及世博展览馆隆重召开,本届大会的主题是“智联世界,生成未来”,大会由上海市人民政府和国家发改委、工信部、科技部、国家网信办、中国科学院、中国工程院、中国科协等七部门共同主办,汇聚

    2024年02月13日
    浏览(43)
  • 强大易用!新一代爬虫利器 Playwright 的介绍

    Playwright 是微软在 2020 年初开源的新一代自动化测试工具,它的功能类似于 Selenium、Pyppeteer 等,都可以驱动浏览器进行各种自动化操作。它的功能也非常强大,对市面上的主流浏览器都提供了支持,API 功能简洁又强大。虽然诞生比较晚,但是现在发展得非常火热。 因为 Pla

    2024年04月12日
    浏览(70)
  • 自动驾驶国家新一代人工智能开放创新平台产业化应用

    【摘要】:当前,全球新一轮科技革命和产业变革正孕育兴起,自动驾驶作为人工智能最重要的应用载体之一,对于加快交通强国、智能汽车强国建设,具有十分突出的战略意义。我国自动驾驶研发应用,面临技术、资金、应用等诸多挑战,为此,需要打造一套符合我国国情

    2024年02月14日
    浏览(56)
  • 自动化神器 Playwright 的 Web 自动化测试解决方案

      1. 主流框架的认识 总结: 由于Selenium在3.x和4.x两个版本的迭代中并没有发生多大的变化,因此Selenium一统天下的地位可能因新框架的出现而变得不那么稳固。 后续的Cypress、TestCafe、Puppeteer被誉为后Selenium时代Web UI自动化的三驾马车。但是由于这三个框架都是基于JavaScript开发

    2024年02月02日
    浏览(50)
  • 基于Playwright自动化测试部署方案

    基于playwright框架,搭建了自动化测试项目,在服务器上使用Docker起容器跑镜像,镜像内容基于playwright的官方镜像,并向其中移入了host文件,以便切换测试用例运行所在的环境(测试/线上环境)。 引入测试用例的管理后台,方便测试用例与测试报告的管理。管理后台中可以

    2024年02月13日
    浏览(37)
  • 最强自动化测试框架Playwright(20)- iframe

    一个页面可以附加一个或多个 Frame 对象。每个页面都有一个主框架,并且假定页面级交互(如)在主框架中运行。 click 使用 iframe 时,可以创建一个框架定位器,该定位器将进入 iframe 并允许选择该 iframe 中的元素。 上面代码,先定位frame,然后定位frame里的元素,并对元素

    2024年02月13日
    浏览(33)
  • 最强自动化测试框架Playwright(9)- 下载文件

    对于页面下载的每个附件,都会发出 page.on(“download”) 事件。 下载开始后,将发出下载事件。下载完成后,下载路径将变为可用 所有这些附件都下载到一个临时文件夹中。可以使用事件中的下载对象获取下载 URL、文件系统路径和有效负载流。 关闭浏览器上下文时,将

    2024年02月13日
    浏览(47)
  • 最强自动化测试框架Playwright(29)-文件选择对象

    FileChooser对象通过page.on(\\\"filechoose\\\")事件监听。 如下代码实现点击百度搜图按钮,上传文件进行搜索。 为文件选择器设置要上传的文件路径 file_chooser.set_files(files) file_chooser.set_files(files, **kwargs) 返回文件选择器关联的input元素 file_chooser.element 返回文件选择器是否接收多个文件

    2024年02月12日
    浏览(33)
  • 最强自动化测试框架Playwright(21)-测试生成器inspector

    运行该命令时,将打开两个窗口,一个浏览器窗口,可以在其中与要测试的网站进行交互,另一个是Playwright Inspector窗口,可以在其中记录测试,然后将其复制到编辑器中。 使用该命令运行测试生成器,后面为要为其生成测试的网站的 URL。URL 是可选的 运行命令并在浏览器窗

    2024年02月13日
    浏览(42)
  • Playwright已经是目前最好的测试自动化工具了吗?

    作者观点 :很长时间以来,Selenium是QA工程师寻求测试自动化解决方案的首选测试框架。它能够测试任何浏览器(这在IE浏览器的统治时期尤其重要)和任何平台。然而,现在看来,那个时代已经过去了。 今天,大多数web应用程序都是用现代前端框架开发的,如React、Angular或

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包