2016-07-26 10 views
0

divタグを使用して開発されたドロップダウンを選択する問題に直面しています。 Firepathで確認すると、私のxpathが正しいです。私はページが私は事業部をクリックして最初にして選択値のドロップダウンしたいモデル選択方法セレンのDivタグで開発されたドロップダウン

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

@FindBys({@FindBy(xpath ="//div[@name='notifications.preferredMedium']/ul/li")}) 
private List<WebElement> profPrefMediumValues; 

//method to select the dropdown value 

public void selectPreferredMedium() throws Exception 
{ 
    profPrefMedium.click(); 
    //after click i am getting element not clickable 
    dValue =data.get("PROFILE PREFERRED MEDIUM"); 
    System.out.println("no.of items in list "+profPrefMediumValues.size()); 
    // displayed size as 7, which is correct 
    itr = profPrefMediumValues.iterator(); 
    while(itr.hasNext()) { 
     tmpWeb = itr.next(); 
     System.out.println("value in list " + tmpWeb.getText()); 
     //no value displayed. 
     tmpWeb.click(); 
     //this is also not working.    
    } 
} 

オブジェクト使用しています

は、いずれかのコードが動作するように修正してください。ここで

ソースコード

<sf-decorator class="ng-scope" form="item" ng-repeat="item in column.items"> 
    <div class="form-group ng-scope is-required" ng-class="{'has-error': form.disableErrorState !== true && hasError(), 'has-focus': hasFocus, 'is-required': form.required}" ng-init="hasFocus = false"> 
    <label class="control-label ng-scope" translate="Preferred Media" ng-show="showTitle()" ng-class="::form.labelHtmlClass">Preferred Medium</label> 
    <div class="control-content" ng-class="{'col-sm-2': form.fieldSize === 'small', 'col-sm-5': form.fieldSize === 'medium'}"> 
     <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 
      <span ng-class="{'glyphicon glyphicon-ok pull-right': isChecked(option.value)}"/> 
     </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 
      <span ng-class="{'glyphicon glyphicon-ok pull-right': isChecked(option.value)}"/> 
     </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 
      <span ng-class="{'glyphicon glyphicon-ok pull-right': isChecked(option.value)}"/> 
     </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 
      <span ng-class="{'glyphicon glyphicon-ok pull-right': isChecked(option.value)}"/> 
     </li> 
    </ul> 
    </div> 
    <div class="help-block" sf-message=""/></div> 
    </div> 
</sf-decorator> 

おかげ Sarada

答えて

0
Finally, I got answer. 
It worked with javascriptExecutor. 

First clicked on dropdown and then value using javascriptExecutor 
jse = (JavascriptExecutor)driver; 
//click on dropdown 
jse.executeScript("arguments[0].click();",profPrefMedium); 
//click on the value 
dValue = data.get("PROFILE PREFERRED MEDIUM"); 

     if(dValue.equalsIgnoreCase("Email")) 
     { 
      jse.executeScript("arguments[0].click();",profPrefMediumEmail); 

     } 

Thanks all for your help. 
1

あなたのコード内の1つの間違いがありますが、あなたはこれを試してみてくださいすることができますか?

あなたのコードは次のとおりです。

@FindBys({@FindBy(xpath ="//div[@name='notifications.preferredMedium']/ul/li")}) 

に変更してください:

@FindBys({@FindBy(xpath ="//div[@name='notifications.preferredMedium']//ul/li")}) 

または

@FindBys({@FindBy(xpath ="//div[@name='notifications.preferredMedium']/div/ul/li")}) 
+0

こんにちはゆうチャン、ご返信いただきありがとうございます。それでも動作していません。まず第一に、私はprofPrefMedium.click()を使ってドロップダウンをクリックすることができません。 –

+0

@SaradaAkurathi、今回例外はありますか? –

+0

申し訳ありませんが私は私が期待しているものを得ていない。リストをクリックして、Map(data.get)で送信された値に基づいてオプションを選択したいとします。 –

関連する問題