2016-09-01 5 views
0

検索ボックスを持つドロップダウンから項目を選択したいと思います。私のセレンコードは次のとおりです。要素が表示されないsearchboxを持つドロップダウンアイテムの選択の例外

WebElement select = BrowserSetup.driver.findElement(By.xpath("//div[contains(@class,'chosen-container')]")); 
select.click(); 

List<WebElement> dropDowns = BrowserSetup.driver.findElements(By.className("chosen-results")); 

WebElement dropDownOne = dropDowns.get(0); // perform further action 
dropDownOne.click(); 

私は、デバッグしていたときにこのコードが実行されているが、私は私のスクリプトを実行すると、それはとして例外がスローされます。 org.openqa.selenium.ElementNotVisibleException: 要素は見えないラインで:

WebElement dropDownOne = dropDowns.get(0); 
dropDownOne.click(); 

HTMLコードは次のとおりです。

<div class="form-group"> 
<div class="row"> 
<div class="col-sm-6 margin-bottom"> 
<select id="CustomerCard_state" class="form-control m-b drop_state"       tabindex="-1" name="CustomerCard.state" data-val-required="Please enter State"  data-val="true" style="display: none;"> 
<option value="">Please select state</option> 
<option value="AK">Alaska</option> 
<option value="AL">Alabama</option> 
<option value="AZ">Arizona</option> 
<option value="AR">Arkansas</option> 
<option value="CA">California</option> 
<option value="CO">Colorado</option> 
<option value="CT">Connecticut</option> 
<option value="DE">Delaware</option> 
<option value="FL">Florida</option> 
<option value="GA">Georgia</option> 
<option value="HI">Hawaii</option> 
<option value="ID">Idaho</option> 
<option value="IL">Illinois</option> 
<option value="IN">Indiana</option> 
<option value="IA">Iowa</option> 
<option value="KS">Kansas</option> 
<option value="KY">Kentucky</option> 
<option value="LA">Louisiana</option> 
<option value="ME">Maine</option> 
<option value="MD">Maryland</option> 
<option value="MA">Massachusetts</option> 
<option value="MI">Michigan</option> 
<option value="MN">Minnesota</option> 
<option value="MS">Mississippi</option> 
<option value="MO">Missouri</option> 
<option value="MT">Montana</option> 
<option value="NE">Nebraska</option> 
<option value="NV">Nevada</option> 
<option value="NH">New Hampshire</option> 
<option value="NJ">New Jersey</option> 
<option value="NM">New Mexico</option> 
<option value="NY">New York</option> 
<option value="NC">North Carolina</option> 
<option value="ND">North Dakota</option> 
<option value="OH">Ohio</option> 
<option value="OK">Oklahoma</option> 
<option value="OR">Oregon</option> 
<option value="PA">Pennsylvania</option> 
<option value="RI">Rhode Island</option> 
<option value="SC">South Carolina</option> 
<option value="SD">South Dakota</option> 
<option value="TN">Tennessee</option> 
<option value="TX">Texas</option> 
<option value="UT">Utah</option> 
<option value="VT">Vermont</option> 
<option value="VA">Virginia</option> 
<option value="WA">Washington</option> 
<option value="WV">West Virginia</option> 
<option value="WI">Wisconsin</option> 
<option value="WY">Wyoming</option> 
</select> 
<div id="CustomerCard_state_chosen" class="chosen-container chosen-  container-single chosen-with-drop chosen-container-active" style="width: 100%;" title=""> 
<a class="chosen-single" tabindex="-1"> 
<span>Please select state</span> 
<div> 
<b/> 
</div> 
</a> 
<div class="chosen-drop"> 
<div class="chosen-search"> 
<input type="text" autocomplete="off" tabindex="16"/> 
</div> 
<ul class="chosen-results"> 
<li class="active-result result-selected" style="" data-option-array-  index="0">Please select state</li> 
<li class="active-result" style="" data-option-array-index="1">Alaska</li> 
<li class="active-result" style="" data-option-array-index="2">Alabama</li> 
<li class="active-result" style="" data-option-array-index="3">Arizona</li> 
<li class="active-result" style="" data-option-array- index="4">Arkansas</li> 
<li class="active-result" style="" data-option-array-index="5">California</li> 
<li class="active-result" style="" data-option-array-  index="6">Colorado</li> 
<li class="active-result" style="" data-option-array-  index="7">Connecticut</li> 
<li class="active-result" style="" data-option-array-index="8">Delaware</li> 
<li class="active-result" style="" data-option-array-index="9">Florida</li> 
<li class="active-result" style="" data-option-array-  index="10">Georgia</li> 
<li class="active-result" style="" data-option-array-index="11">Hawaii</li> 
<li class="active-result" style="" data-option-array-index="12">Idaho</li> 
<li class="active-result" style="" data-option-array-index="13">Illinois</li> 
<li class="active-result" style="" data-option-array-index="14">Indiana</li> 
<li class="active-result" style="" data-option-array-index="15">Iowa</li> 
<li class="active-result" style="" data-option-array-index="16">Kansas</li> 
<li class="active-result" style="" data-option-array-index="17">Kentucky</li> 
<li class="active-result" style="" data-option-array-index="18">Louisiana</li> 
<li class="active-result" style="" data-option-array-index="19">Maine</li> 
<li class="active-result" style="" data-option-array-index="20">Maryland</li> 
<li class="active-result" style="" data-option-array-index="21">Massachusetts</li> 
<li class="active-result" style="" data-option-array-index="22">Michigan</li> 
<li class="active-result" style="" data-option-array-index="23">Minnesota</li> 
<li class="active-result" style="" data-option-array-index="24">Mississippi</li> 
<li class="active-result" style="" data-option-array-index="25">Missouri</li> 
<li class="active-result" style="" data-option-array-index="26">Montana</li> 
<li class="active-result" style="" data-option-array-index="27">Nebraska</li> 
<li class="active-result" style="" data-option-array-index="28">Nevada</li> 
<li class="active-result" style="" data-option-array-index="29">New Hampshire</li> 
<li class="active-result" style="" data-option-array-index="30">New Jersey</li> 
<li class="active-result" style="" data-option-array-index="31">New Mexico</li> 
<li class="active-result" style="" data-option-array-index="32">New York</li> 
<li class="active-result" style="" data-option-array-index="33">North Carolina</li> 
<li class="active-result" style="" data-option-array-index="34">North Dakota</li> 
<li class="active-result" style="" data-option-array-index="35">Ohio</li> 
<li class="active-result" style="" data-option-array-index="36">Oklahoma</li> 
<li class="active-result" style="" data-option-array-index="37">Oregon</li> 
<li class="active-result" style="" data-option-array-index="38">Pennsylvania</li> 
<li class="active-result" style="" data-option-array-index="39">Rhode Island</li> 
<li class="active-result" style="" data-option-array-index="40">South Carolina</li> 
<li class="active-result" style="" data-option-array-index="41">South Dakota</li> 
<li class="active-result" style="" data-option-array-index="42">Tennessee</li> 
<li class="active-result" style="" data-option-array-index="43">Texas</li> 
<li class="active-result" style="" data-option-array-index="44">Utah</li> 
<li class="active-result" style="" data-option-array-index="45">Vermont</li> 
<li class="active-result" style="" data-option-array-index="46">Virginia</li> 
<li class="active-result" style="" data-option-array-index="47">Washington</li> 
<li class="active-result" style="" data-option-array-index="48">West Virginia</li> 
<li class="active-result" style="" data-option-array-index="49">Wisconsin</li> 
<li class="active-result" style="" data-option-array-index="50">Wyoming</li> 
</ul> 
</div> 
</div> 
<span class="text-danger drop_state-error " style="display:none;"/> 

どうすれば解決できますか?

答えて

0

の代わりにそれをクリック、hereが説明するように選択を使用します。

Select select = new Select(driver.findElement(By.id("CustomerCard_state"))); 
select.deselectAll(); 
select.selectByIndex(0); 

をあなたはまた、目に見えるテキストによって選択することができ、などからoptionを選択する複数の方法がありますdocumentation on Select

0

を参照してください。 dropdown

Select select = new Select(driver.findElement(By.id("CustomerCard_state"))); 
select.selectByVisibleText("Arizona"); 

OR

Select select = new Select(driver.findElement(By.id("CustomerCard_state"))); 
dropdown.selectByIndex(2); 

OR

Select select = new Select(driver.findElement(By.id("CustomerCard_state"))); 
dropdown.selectByValue("AZ"); 

また、あなたはこのlinkを参照することができます。 これがあなたを助けてくれることを願っています。

0

私は

溶液#1デバッグしていたときにこのコードが実行されている:

をデバッグしているとき、同期がアプリケーションとテスト実行の間で起こっているためです。 org.openqa.selenium.ElementNotVisibleException: 行の要素は見えない: WebElement dropDownOneので、落下した値

をクリックするが、私は私のスクリプトを実行すると、それは のように例外をスローする前に、いくつかの遅延を導入してください= dropDowns.get(0);
dropDownOne.click();

溶液#2: 検索ボックスからドロップダウン、これはその場で表示されるため、(ちょうど別のフレームのような)現在の要素に接続されていません。だから、溶液#1が機能しない場合、コードが

List<WebElement> dropDowns = BrowserSetup.driver.findElements(By.className("chosen-results")); 
dropDownOne = dropDowns.get(0); 
driver.findElement(By.className("chosen-results")).click(); // make focus on drop down results elements 
dropDownOne.click(); 

、のように見えるかもしれこのため、セレン

によるクリックアクションを実行するためにアクティブなドロップダウンアクティブにクリックし、溶液#2がすべき作ります正しく動作する

関連する問題