单击元素按值 - 量角器

时间:2015-07-27 14:06:49

标签: angularjs testing protractor end-to-end

我点击模态窗口非常简单。一般来说,只有相关部分是这样的:

<div id="partSelection">
   <button value="0" name="partSelection">BLATNÍK P L</button>
   <button value="1" name="partSelection">BLATNÍK P P</button>

我需要单击此按钮之一,我知道如何点击此按钮: xpath:

element(by.xpath('//*[@id="partSelection"]/button[2]')).click();

也可以使用按钮文字:

element(by.buttonText("BLATNÍK P P")).click();

但我注意到每个按钮的值不同,我相信这是开发人员不会改变的。有没有办法如何点击基于价值的元素?

感谢您的建议。

2 个答案:

答案 0 :(得分:4)

添加现有答案。

您可以使用以下CSS选择器解决它:

element(by.css("#partSelection button[value=0]")).click();

或者,使用by.xpath()定位器:

element(by.xpath("//div[@id='partSelection']/button[@value='0']")).click();

请注意,如果您打算使用&#34;按值&#34;技术经常,为遵循DRY原则,定义自定义by.value()定位器可能是个好主意:

答案 1 :(得分:2)

如果您只想查找特定属性,此示例应该有效。当我试图找出找到特定属性的最佳方法时,我通常会参考此css selectors

基本上,细分是在我们需要按钮的情况下找到您想要的标记,然后我们想要找到该标记内的属性。因此,我们可以选择名称。两个按钮的名称相同,因此我们不想使用它。但是,对于每个按钮都是不同的,因此在这种情况下使用会更好。

element(by.ccs('tag[attribute=""]');

tag = button

attribute = value

element(by.css('button[value="0"]')).click(); // button with text BLATNÍK P L 
element(by.css('button[value="1"]')).click(); // button with text BLATNÍK P P