我尝试了任何可能的方法来点击;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选择器参考