2016-07-26 12 views
-2

當點擊使用div標記開發的下拉時,我得到元素不可點擊的錯誤。使用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> 

我創建的元素如下:

 @FindBy(css="div[name='notifications.preferredMedium']") 
     private WebElement profPrefMedium; 

錯誤到來是如下:「元素不是在點點擊(1172.199951171875 ,642.2999877929688)。 其他元素會收到點擊:「。

任何人都可以提供幫助。

+0

您需要向我們提供實際的HTML –

+0

的方法有很多,可能導致此,爲例子,你試過元素點擊已經改變了你上次檢查時的物理位置。 –

回答

0
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. 
-1

請儘量MovetoElement(Actions),然後執行click()

也許這將幫助你解決這個問題

代碼的格式應爲以上,按照準則。

0

您可以嘗試使用顯式的等待與Expeceted條件爲

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

我試過這個選項,執行進入if循環,然後我得到了,元素不再可點擊的錯誤。 –

+0

您可以請分享您的代碼 – Siva

+0

以下功能將被調用來點擊下拉菜單。 'public void selectPreferredMedium()throws Exception { \t wait = new WebDriverWait(driver,30); \t wait.until(ExpectedConditions.elementToBeClickable(profPrefMedium)); \t \t profPrefMedium.click(); }' –