【发布时间】:2022-12-15 00:20:39
【问题描述】:
我无法点击下拉菜单抛出的特定选项:
客户组有这个:
<div class="admin__action-group-wrap admin__action-multiselect-wrap action-select-wrap _active" data-role="wrap-ui-group" tabindex="0" data-bind="
attr: {
id: uid,
name: inputName
},
css: {
_active: listVisible,
_disabled: disabled,
_focus: hasFocus,
_multiple: multiple
},
event: {
keydown: keydownSwitcher,
focusin: onFocusIn,
focusout: onFocusOut
},
outerClick: outerClick.bind($data)
" id="PR1R77P" name="settings[customer_group_id]">
<div class="admin__action-multiselect action-select" data-action="open-search" data-bind="click: toggleListVisible">
<!--ko ifnot: multiple-->
<div class="admin__action-multiselect-text" data-role="selected-option" data-bind="text: resultLabel">Teleweb</div>
<!-- /ko-->
<!--ko if: multiple--><!-- /ko -->
</div>
<div class="admin__action-group-list action-select-list action-menu _active" data-bind="css: { _active: listVisible }">
<div class="admin__action-multiselect-search-wrap">
<input class="admin__control-text admin__action-multiselect-search" data-bind="
hasFocus: searchFocus,
event: {
keyup: filterOptionsKeydown
},
valueUpdate: 'afterkeydown',
value: filterInputValue" type="text">
<label class="admin__action-multiselect-search-label" data-action="advanced-select-search" data-bind="attr: {for: uid}, visible: !isSearchActive()
" for="PR1R77P"></label>
<label class="admin__action-multiselect-remove-label" data-action="advanced-select-search" data-bind="click: clearSearch, visible: isSearchActive
" style="display: none;"></label>
<div class="admin__action-multiselect-search-count" data-bind="visible: quantitySearchItems
">
<!--ko ifnot: multiple-->
<span data-bind="text: quantitySearchItems">17</span>
<span data-bind="i18n: 'options'">options</span>
<!-- /ko-->
<!--ko if: multiple--><!-- /ko-->
</div>
</div>
<!--ko if: group-->
<!--ko repeat: { foreach: convertedOptions, item: 'optgroup'}--><ul class="admin__action-multiselect-menu-inner _root" data-repeat-index="0">
<li class="admin__action-group-optgroup">
<strong data-bind="text: optgroup().label">Customer Groups</strong>
</li>
<!-- ko repeat: { foreach: optgroup().value, item: 'option'} --><li data-role="option" class="admin__action-group-option" tabindex="-1" data-bind="
click: setSelected.bind($context.$data, option().value),
event: {
hover: resetHover
},
attr: {
'data-value': option().value
}" data-repeat-index="0" data-value="11">
<div class="action-menu-item _with-checkbox" data-bind="
css: {
_selected: isSelected(option().value)
},
clickBubble: false
">
<!--ko if: multiple--><!-- /ko-->
<label class="admin__action-multiselect-label">
<span data-bind="text: option().label">E.BOSCH</span>
</label>
</div>
</li><li data-role="option" class="admin__action-group-option" tabindex="-1" data-bind="
click: setSelected.bind($context.$data, option().value),
event: {
hover: resetHover
},
attr: {
'data-value': option().value
}" data-repeat-index="1" data-value="8">
<div class="action-menu-item _with-checkbox" data-bind="
css: {
_selected: isSelected(option().value)
},
clickBubble: false
">
<!--ko if: multiple--><!-- /ko-->
<label class="admin__action-multiselect-label">
<span data-bind="text: option().label">E.BOSCH2</span>
</label>
</div>
</li><!-- /ko -->
</ul><!--/ko-->
<!-- /ko-->
<!--ko ifnot: group--><!-- /ko-->
<!--ko if: multiple--><!-- /ko -->
</div>
</div>
我可以通过这样做来点击按钮:
driver.findElement(By.name("settings[customer_group_id]")).click();
我试着用这个点击一个特定的选项:
driver.findElement(By.xpath("//li[@class='admin__action-group-optgroup' and contains(.,'E.BOSCH')]")).click();
但它根本不做任何事情。
我究竟做错了什么?为什么我不能点击所需的选项?。
注意:我无法发布 URL,因为它是隐藏的
【问题讨论】:
-
没有实际链接,我们无能为力,对不起。
-
嘿@Prophet 你看到我的代码有什么问题吗?根据呈现的内容.. 你会怎么做?
-
我不知道。有几种可能的事情可能会使它不起作用
-
如果您在单击该选项之前使用睡眠?也许您的问题是该元素不存在。另外,试试这个
driver.findElement(By.xpath("//span[@data-bind='text: option().label' and text()='E.BOSCH2']")).click();而不是driver.findElement(By.xpath("//li[@class='admin__action-group-optgroup' and contains(.,'E.BOSCH')]")).click(); -
@JakyRuby 谢谢!!,它对我有用。但是请.. 你能向我和“我们”解释为什么我的方法不起作用吗?你摇滚!
标签: java selenium selenium-webdriver xpath drop-down-menu