Selenium 使用div标记开发的下拉列表的元素不可单击错误

Selenium 使用div标记开发的下拉列表的元素不可单击错误,selenium,Selenium,我得到的元素不可点击错误时,点击下拉列表开发的div标签 下面是HTML代码: <div class="form-control btn-group ui-multiselect-dropdown ng-isolate-scope ng-valid ng-valid-schema-form ng-touched" data-role="multiselect" ng-init="open=false" ng-class="{open: open}" autopopulate-to="for

我得到的元素不可点击错误时,点击下拉列表开发的div标签

下面是HTML代码:

<div class="form-control btn-group ui-multiselect-dropdown ng-isolate-scope ng-valid ng-valid-schema-form ng-touched" data-role="multiselect" ng-init="open=false" ng-class="{open: open}" autopopulate-to="form" populate-to="form" reload-options="form" schema-name="form" sf-changed="form" schema-validate="form" auto-tab-field="" ng-model="model['notifications']['preferredMedium']" tabindex="15" ng-disabled="form.readonly || (form.enabled && !evalExpr(form.enabled,{ model: model, 'arrayIndex': arrayIndex }))" preselected="model['notifications']['preferredMedium']" options="form.titleMap" name="notifications.preferredMedium" style="">

 <div class="ui-multiselect-dropdown-description ng-binding" ng-bind="selectedDescription || 'Select'">Select</div>

   <ul class="dropdown-menu" autofocus="autofocus">

      <li class="ui-multiselect-dropdown-option" data-value="select-all" data-role="option" ng-click="selectAll()">Check All</li>

      <li class="ui-multiselect-dropdown-option" data-value="unselect-all" data-role="option" ng-click="deselectAll();">Uncheck All</li>

      <li class="divider"/>

      <li class="ui-multiselect-dropdown-option ng-binding ng-scope" ng-attr-data-checked="{{isChecked(option.value) ? 1 : 0}}" data-type="value" ng-attr-data-value="{{::option.value}}" data-role="option" ng-class="{selected: keyBoardPointer(option.value)}" ng-click="setSelectedItem(option)" ng-repeat="option in options" data-checked="0" data-value="email"> Email </li>

      <li class="ui-multiselect-dropdown-option ng-binding ng-scope" ng-attr-data-checked="{{isChecked(option.value) ? 1 : 0}}" data-type="value" ng-attr-data-value="{{::option.value}}" data-role="option" ng-class="{selected: keyBoardPointer(option.value)}" ng-click="setSelectedItem(option)" ng-repeat="option in options" data-checked="0" data-value="mobileNo"> SMS </li>

      <li class="ui-multiselect-dropdown-option ng-binding ng-scope" ng-attr-data-checked="{{isChecked(option.value) ? 1 : 0}}" data-type="value" ng-attr-data-value="{{::option.value}}" data-role="option" ng-class="{selected: keyBoardPointer(option.value)}" ng-click="setSelectedItem(option)" ng-repeat="option in options" data-checked="0" data-value="phoneNo"> Phone </li>

      <li class="ui-multiselect-dropdown-option ng-binding ng-scope" ng-attr-data-checked="{{isChecked(option.value) ? 1 : 0}}" data-type="value" ng-attr-data-value="{{::option.value}}" data-role="option" ng-class="{selected: keyBoardPointer(option.value)}" ng-click="setSelectedItem(option)" ng-repeat="option in options" data-checked="0" data-value="fax"> Fax </li>

  </ul>
错误如下:“元素在点(1172.199951171875、642.29998777929688)处不可单击。”。 其他元素将收到单击:“


任何人都可以在这方面提供帮助。

请尝试
移动到元素(操作)
,然后执行
单击()

也许这会帮助你解决这个问题


根据指导原则,代码的格式应如上所述。

您可以尝试使用Expected条件下的显式等待

WebDriverWait myWait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement buttonToClick = myWait.Until(ExpectedConditions.ElementToBeClickable(By.Id("yourelementid")));
if (buttonToClick != null) buttonToClick.Click();

您需要向我们提供实际的HTM有很多可能导致这种情况的方法,例如,您尝试单击的元素与上次检查时的物理位置不同。我尝试了此选项,执行进入if循环,然后我得到,元素不可单击错误。将调用以下函数单击下拉列表<代码>public void selectPreferredMedium()引发异常{wait=new WebDriverWait(driver,30);wait.until(ExpectedConditions.ElementToBelickable(profPrefMedium));profPrefMedium.click();}
您是否能够手动单击该元素。我怀疑单击“ProfPrefMedia”不起作用。可能是您可以尝试查找“Select”,然后尝试单击它。我已尝试通过提供xpath来查找该元素,如下所示
@FindBy(xpath=“div[name='notifications.preferredmedia']/div”)私有网络媒体我还是有同样的问题。在手动执行中,我可以单击字段并选择值。哦。。您可以找到“选择”,但无法单击它。我说的对吗?
WebDriverWait myWait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement buttonToClick = myWait.Until(ExpectedConditions.ElementToBeClickable(By.Id("yourelementid")));
if (buttonToClick != null) buttonToClick.Click();
Finally, I got answer.  
It worked with javascriptExecutor.  
 `jse = (JavascriptExecutor)driver;
 jse.executeScript("arguments[0].click();",profPrefMedium);`  

Thanks all for your help in solving my problem.