【发布时间】:2021-10-08 23:58:52
【问题描述】:
我一直在努力学习剧作家,在实施过程中我正在尝试编写一个测试用例,通过名称找到一个输入元素并用一些值填充它
不幸的是,该元素只有类和名称属性。我一直在尝试找到一种阅读方式,但在文档上没有找到任何内容,或者我可能错过了
请帮忙
【问题讨论】:
标签: css-selectors playwright playwright-test
我一直在努力学习剧作家,在实施过程中我正在尝试编写一个测试用例,通过名称找到一个输入元素并用一些值填充它
不幸的是,该元素只有类和名称属性。我一直在尝试找到一种阅读方式,但在文档上没有找到任何内容,或者我可能错过了
请帮忙
【问题讨论】:
标签: css-selectors playwright playwright-test
不是直接回答,而是一种解决方法。 您可以指定您的 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");,但显然它不起作用,还有什么建议吗?
[name='username'] 将找到具有该名称的任何标签的任何元素,并且如您所见,可能不会选择您想要的那个。最简单的解决方案是编写一个更好、更具体的标识符。如果您分享您的 html(可能是一个新问题),有人会提供帮助 - 或者,我强烈建议您花几个小时学习如何识别网络元素。这是一个很好的学习资源,会教你像专业人士一样去做:testautomationu.applitools.com/web-element-locator-strategies
page.$$(selector) 是您收集所有元素并进行迭代的方法。 playwright.dev/docs/api/class-page#page-query-selector-all