【问题标题】:Equivalent of by.name selector in playwright相当于剧作家中的 by.name 选择器
【发布时间】:2021-10-08 23:58:52
【问题描述】:

我一直在努力学习剧作家,在实施过程中我正在尝试编写一个测试用例,通过名称找到一个输入元素并用一些值填充它

不幸的是,该元素只有类和名称属性。我一直在尝试找到一种阅读方式,但在文档上没有找到任何内容,或者我可能错过了

请帮忙

【问题讨论】:

    标签: css-selectors playwright playwright-test


    【解决方案1】:

    不是直接回答,而是一种解决方法。 您可以指定您的 css 选择器来搜索 name 属性:

    结构是:

    <tag>[attribute='value']
    

    例如: 这个 html(如果你查看 dom,就在这个页面上):

    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0">
    

    用这个 css 标识:

    meta[name='viewport']
    

    也可以不用标签,只用名字,见下面的例子:

    await page.click(`[name='my-value']`);
    

    【讨论】:

    • 还有一个问题 - 我发现多个同名元素,剧作家使用了第一个元素,这恰好是一个隐藏字段,这导致相同的失败。有什么可以告诉剧作家选择一个特定的吗?我尝试提供以下await page.fill("[name='username'] :visible", "admin");,但显然它不起作用,还有什么建议吗?
    • @vivek 尝试不同的定位器?一个更具体的? - 仅使用[name='username'] 将找到具有该名称的任何标签的任何元素,并且如您所见,可能不会选择您想要的那个。最简单的解决方案是编写一个更好、更具体的标识符。如果您分享您的 html(可能是一个新问题),有人会提供帮助 - 或者,我强烈建议您花几个小时学习如何识别网络元素。这是一个很好的学习资源,会教你像专业人士一样去做:testautomationu.applitools.com/web-element-locator-strategies
    • 另外 - page.$$(selector) 是您收集所有元素并进行迭代的方法。 playwright.dev/docs/api/class-page#page-query-selector-all
    • 是的,这是一个挑战,不幸的是,我们依赖于第三方应用程序,这似乎导致了这些挫折!谢谢您的帮助。取得了相当大的进步。
    猜你喜欢
    • 2022-11-16
    • 2022-06-30
    • 2023-02-09
    • 2022-01-07
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多