在web测试中使用不同于ID的选择器是否安全



我与cypr合作了几个月,我已经习惯了使用data-auto-id,这在我的理解中基本上是唯一的选择器。

<button data-auto-id="my-nice-button">

然后我可以选择柏木cy.get([data-auto-id='my-nice-button']...

现在我尝试了剧作家,但通过文本或类似的东西进行选择对我来说似乎很不安全。他们网站上的例子:

await page.locator('article:has-text("Playwright")').click();

什么是安全的方法?我应该在player中使用ID吗?还是可以跳到CSS、文本和其他选择器中?请注意,我没有现实世界的经验,所以我不知道什么是最佳实践。这个问题不是基于观点的,更像是安全还是不安全?

幸运的是,Playwright有许多不同的选择器引擎。你可以选择一个更适合你的场景。剧作家还描述了一套良好的最佳实践。例如:

  • 文本内容、输入占位符、辅助功能角色和标签等属性都是面向用户的属性,很少更改。这些属性不受DOM结构更改的影响
  • 当面向用户的属性频繁更改时,建议使用显式测试id,如data-test-id。CSS和id选择器支持这些data-*属性
  • 并且,XPath和CSS可以绑定到DOM结构或实现。当DOM结构发生变化时,这些选择器可能会中断

如果您的团队始终使用data-属性,您可以继续使用它们。

最新更新