如何在值包含时通过html属性选择Protractor中的元素

时间:2015-08-17 21:03:03

标签: javascript selenium testing protractor end-to-end

苦苦思索如何选择没有标准唯一ID或类的元素。如何使用Protractor选择此输入元素?

注意:我不能使用类ComboBoxInput_Default类,因为此下拉框用于其他几个页面元素。对于至少10个以上的DOM级别,也没有任何易于识别的父元素。

<div style="display:inline; white-space: nowrap;" id="ctl00_ctl31_g_b56afa08_7869_450c_8871_f6759a89d9b1_ctl00_WPQ3txtFields_ddPositioList_10_Solution_MultiComboSelection" class="ComboBox_Default">
  <input type="text" style="width: 133px; height: 15px;" delimiter=";" class="ComboBoxInput_Default" value="-select-" name="ctl00$ctl31$g_b56afa08_7869_450c_8871_f6759a89d9b1$ctl00$WPQ3txtFields_ddPositioList_10_Solution_MultiComboSelection_Input" id="ctl00_ctl31_g_b56afa08_7869_450c_8871_f6759a89d9b1_ctl00_WPQ3txtFields_ddPositioList_10_Solution_MultiComboSelection_Input" autocomplete="off">    
<div>

使每个输入不同的唯一标识标记将附加到生成的标识Solution_MultiComboSelection_Input的末尾。

如果我必须使用jquery获取此元素,我将使用(不是优选的)包含$( "input[name*='Solution_MultiComboSelection_Input']" )。有没有类似的方法用Protractor以这种方式定位元素?

3 个答案:

答案 0 :(得分:4)

当然,使用“contains”或“ends-with”CSS选择器:

element(by.css("input[id*=Solution_MultiComboSelection_Input]"));
element(by.css("input[id$=Solution_MultiComboSelection_Input]"));

答案 1 :(得分:0)

如果这是使用ComboBoxInput_Default作为类的唯一元素,那么您可以使用它来选择它 元件(by.css( 'ComboBoxInput_Default'))

This page有很多选择器的例子。

答案 2 :(得分:0)

如果没有看到页面的其他部分,我很难确定,但我会尝试...

$('input[value="-select-"].ComboBoxInput_Default);

或者

$('div.ComboBoxInput_Default input.ComboBoxInput_Default);

也就是说,最好的解决方案是在代码中添加一个标识符。希望这有帮助!