如何在 Playright 中单击"type=submit"按钮



我尝试了任何可能的方法来点击;type=submit";按钮,但它不会点击按钮,唯一的方法是使用";text="注册";但我不能使用文本,因为表单语言可能会根据用户选择的UI语言而更改。

public Task ClickRegister() => Page.Locator("type=submit").ClickAsync();

这是FE代码:

<button _ngcontent-yyv-c173="" type="submit" class="btn btn-primary"> Register </button>

我正在使用Visual Studio

这不是一个有效的选择器。你能试试BUTTON[type="submit"]吗?

虽然可以使用类选择器选择元素,但这不是一个好的模式。在e2e测试中,您应该只使用用户在定位交互式元素时可以使用的方式。

当不针对交互式元素时,只使用testid或其他形式的选择器(如类选择器(。

await page.getByRole('button', {name: 'Sign In'})

这将针对具有文本Sign In的按钮。

  • 你的e2e测试应该是稳定的;对齐";(url、区域设置等(
  • 然后,您可以转到";动作;阶段,这是你预制的所有动作
  • 在最后来到";分析";阶段(你"期望"的东西(

您的e2e测试应该模拟API调用,这样它就可以在实际后台运行。

有几种方法可以解决这个问题,以下任何一种都可以:

  • button.btn(元素button和分部类btn的组合(
  • button.btn.btn-primary(元素和全类btn-btn-primary的组合(
  • button.btn-primary(元素和类btn-primary的唯一部分的组合(
  • button.btn.btn-primary[类型="提交"](元素、完整类和属性的组合type(
  • .btn.btn-初级(仅为整个类(

如果您的页面有一个";寄存器";就像右边的按钮一样;取消";像左边的按钮一样;接受";cookies按钮,您的CSS选择器按钮[type=submit]可能很脆弱,因此我建议使用完整类作为唯一标识符,例如button.btn-primary表示注册,或utton.btn-primary.pull-left代表取消。此外,您可能会发现开发人员已将按钮放在DOM中分层的行类中,您可以利用该类来降低其脆性,例如.btn-row-button.btn-primary.

您可以从W3Schools获得有关CSS选择器组合的更多信息-CSS选择器参考

相关内容

  • 没有找到相关文章

最新更新