当值包含时如何通过 html 属性在 Protractor 中 select 元素
How to select element in Protractor by html attribute when value contains
苦苦思索如何 select 没有标准唯一 ID 或 class 的元素。我如何使用量角器 select 这个输入元素?
注意:我无法使用 class ComboBoxInput_Default
class,因为此下拉框用于其他几个页面元素。至少 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>
使每个输入不同的唯一标识标记附加到生成的 ID 的末尾,Solution_MultiComboSelection_Input
。
如果我必须使用 jquery 获取此元素,我会使用(不可取)包含 $( "input[name*='Solution_MultiComboSelection_Input']" )
。有没有一些类似的方法可以用 Protractor 以这种方式定位元素?
如果这是唯一以 ComboBoxInput_Default 作为 class 的元素,那么您可以 select 使用
元素(by.css('.ComboBoxInput_Default'))
This page 有很多 select 的例子。
如果没有看到页面的其余部分,很难确定,但我会尝试...
$('input[value="-select-"].ComboBoxInput_Default);
或者也许
$('div.ComboBoxInput_Default input.ComboBoxInput_Default);
也就是说,最好的解决方案是在代码中添加一个标识符。希望这对您有所帮助!
当然,使用 "contains" 或 "ends-with" CSS 选择器:
element(by.css("input[id*=Solution_MultiComboSelection_Input]"));
element(by.css("input[id$=Solution_MultiComboSelection_Input]"));
苦苦思索如何 select 没有标准唯一 ID 或 class 的元素。我如何使用量角器 select 这个输入元素?
注意:我无法使用 class ComboBoxInput_Default
class,因为此下拉框用于其他几个页面元素。至少 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>
使每个输入不同的唯一标识标记附加到生成的 ID 的末尾,Solution_MultiComboSelection_Input
。
如果我必须使用 jquery 获取此元素,我会使用(不可取)包含 $( "input[name*='Solution_MultiComboSelection_Input']" )
。有没有一些类似的方法可以用 Protractor 以这种方式定位元素?
如果这是唯一以 ComboBoxInput_Default 作为 class 的元素,那么您可以 select 使用 元素(by.css('.ComboBoxInput_Default'))
This page 有很多 select 的例子。
如果没有看到页面的其余部分,很难确定,但我会尝试...
$('input[value="-select-"].ComboBoxInput_Default);
或者也许
$('div.ComboBoxInput_Default input.ComboBoxInput_Default);
也就是说,最好的解决方案是在代码中添加一个标识符。希望这对您有所帮助!
当然,使用 "contains" 或 "ends-with" CSS 选择器:
element(by.css("input[id*=Solution_MultiComboSelection_Input]"));
element(by.css("input[id$=Solution_MultiComboSelection_Input]"));