如何单击没有元素ID的按钮

时间:2015-07-30 10:09:06

标签: angularjs

我使用量角器进行e2e测试。我想点击按钮

5 个答案:

答案 0 :(得分:1)

你有没有理由不使用Protractor API,而是直接使用驱动程序?通过ng-click选择可能不是最好的方法(好的做法似乎是根据页面结构选择,而不是机制),我建议你调查一下你是否不能简单地使用by.buttonText:< / p>

element(by.buttonText('Place Order'));

编辑:查看选择器的制作方式,以上操作无效 - 请注意 by.buttonText仅匹配

  • 按钮
  • 输入类型=“按钮”
  • 输入类型=“提交”

我将此保留给将来可能需要此功能的任何人。

如果这不起作用,也许你至少可以按课程选择它,例如在父母的内心?例如:

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

另外,考虑为按钮添加一个单独的类/ id,无论如何它可能会有用。

最后一点,如果您要测试一个大页面,请考虑使用page objects,而不是在单独的步骤中选择相同的内容。这样,您将拥有一个可以使用的漂亮,可维护的对象,而不是编写选择器,而不是:

myPage.placeOrderButton().click();

需要考虑的事情。

答案 1 :(得分:0)

下订单按钮:

$('[ui-sref=​"main.store.featured"]').click();

取消按钮:

rails new app_name
bundle install
rake db:create

答案 2 :(得分:0)

这应该有效:

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

答案 3 :(得分:0)

我认为这里最简单,最易读的方法是按文字找到元素

element(by.xpath('//div[. = "Place Order"]'));

您可能只需要添加wait for element to become visible

var EC = protractor.ExpectedConditions,
    placeOrder = element(by.xpath('//div[. = "Place Order"]'));

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

答案 4 :(得分:0)

我不知道这是否会有所帮助,但我找到了一篇文章,其中有人点击div时遇到问题。只需单击一个div似乎有点多,但我认为该链接可以帮助你

https://adventuresintesting.wordpress.com/tag/protractor-doesnt-click-div/