Angularjs 如何单击没有元素id的按钮

Angularjs 如何单击没有元素id的按钮,angularjs,Angularjs,我正在使用量角器进行e2e测试。我想点击按钮。你有没有理由不使用量角器API,而是直接使用驱动程序?通过ng click进行选择也可能不是最好的方法(好的做法似乎是基于页面结构而不是机制进行选择),如果您不能简单地使用: 编辑:查看选择器的制作方式,上述操作将不起作用-请注意,by.button文本将仅匹配: 钮扣 输入类型=“按钮” 输入类型=“提交” 我把这个留给将来可能需要的人 如果这不起作用,也许您至少可以按类选择它,例如在父级内部?例如: element(by.css('.btn-

我正在使用量角器进行e2e测试。我想点击按钮。你有没有理由不使用量角器API,而是直接使用驱动程序?通过ng click进行选择也可能不是最好的方法(好的做法似乎是基于页面结构而不是机制进行选择),如果您不能简单地使用:

编辑:查看选择器的制作方式,上述操作将不起作用-请注意,by.button文本将仅匹配

  • 钮扣
  • 输入类型=“按钮”
  • 输入类型=“提交”
我把这个留给将来可能需要的人

如果这不起作用,也许您至少可以按类选择它,例如在父级内部?例如:

element(by.css('.btn-wrapper > .btn:nth-child(2)'));

也可以考虑为按钮添加单独的类/ ID,以后可能会有用。

最后一句话,如果你有一个大页面要测试,考虑使用,而不是在不同的步骤中选择相同的东西。这样,您就可以使用一个漂亮的、可维护的对象,而不是编写选择器,如:

myPage.placeOrderButton().click();

只是要考虑的事情。

< P>顺序按钮:

$('[ng-if*="checkout"]').click();
取消按钮:

$('[ui-sref=​"main.store.featured"]').click();
这应该起作用:

element(by.css('[ng-click="ctrl.placeOrder()"]')).click();

我认为这里最简单、最可读的方法是通过文本定位元素:

您可能只需要添加一个:


我不知道这是否有帮助,但我发现一篇文章中有人在点击一个div时遇到了问题。仅仅点击一个div似乎有点难,但我认为这个链接可以帮助你解决问题


@vignesh,请编辑问题并在那里添加代码-不在评论中打开浏览器控制台,尝试使用您使用的选择器选择相同的元素,看看是否有效。如果不调整它。是的,在这种情况下可能不起作用。你试过我建议的下一种方法吗?答案很好,坚持下去!我认为,由于这个“按钮”的制作方式,选择器实际上与它不匹配。我认为最好的方法是更改html,使其与以下任何一个匹配:@wap300哦,是的,很好,它是
div
元素。我会更新答案。
element(by.css('[ng-click="ctrl.placeOrder()"]')).click();
element(by.xpath('//div[. = "Place Order"]'));
var EC = protractor.ExpectedConditions,
    placeOrder = element(by.xpath('//div[. = "Place Order"]'));

browser.wait(EC.visibilityOf(placeOrder), 5000);
placeOrder.click();