2015-04-23 93 views
1

我想知道如何在ddl(下拉列表)中找到它後選擇元素。我的功能可以找到元素,但它沒有選擇它;我嘗試點擊,但沒有奏效。
感謝
的代碼是:使用java從下拉列表中選擇元素

public static void selectGuestCountry() 
    { 
     WebElement droplist = driver.findElement(By.className("sbOptions")); 

     List<WebElement> allOptions = droplist.findElements(By.tagName("a")); 
     System.out.println("Total options in list --> " + allOptions.size()); 

     for (int i=0;i<allOptions.size();i++) 
     { 
      //System.out.println("++> " + allOptions.get(i).getAttribute("text")); 
      if(allOptions.get(i).getAttribute("text").equals("FRANCE")) { 
       System.out.println("++++>" + allOptions.get(i).getAttribute("text")); 

       **allOptions.get(i).click();**// This is doesn't select the country 
       break; 
     } 


    } 
--------------------------------------------------------------- 

下面是HTML代碼,感謝:

<div class="guestForm"> 
<input id="reservations0.guests0.id" type="hidden" value="0" name="reservations[0].guests[0].id"> 
<br> 
<div class="form-border"> 
<h5> 
<div class="field-col left"> 
<div class="field-col right"> 
<div> 
<div class="emails"> 
<div class="contactInfo"> 
<div class="field-row"> 
<label class="ellipsis" title="Organization">Organization</label> 
<input id="reservations0.guests0.organization" class="field" type="text" maxlength="40" value="" name="reservations[0].guests[0].organization"> 
</div> 
<div class="field-row select-big country"> 
<label> 
<select id="reservations0.guests0.address.country.alpha2Code" class="selectbox" onchange="populateStates(this);" name="reservations[0].guests[0].address.country.alpha2Code" sb="73833889" style="display: none;"> 
<div id="sbHolder_73833889" class="sbHolder"> 
<a id="sbToggle_73833889" class="sbToggle" href="#"></a> 
<a id="sbSelector_73833889" class="sbSelector" href="#">Select Country</a> 
<ul id="sbOptions_73833889" class="sbOptions" style="display: none;"> 
<li> 
<li> 
<a href="#US" rel="US">UNITED STATES</a> 
</li> 
<li> 
<a href="#AF" rel="AF">AFGHANISTAN</a> 
</li> 
<li> 
<li> 
<li>` 
+0

你能編輯你的問題並添加相關的html嗎? – LittlePanda

+0

你可以試着明確地等待元素'allOptions.get(i)'嗎?等待元素可點擊 – LittlePanda

+0

可能的重複[如何選擇selenium webdriver下拉值](http://stackoverflow.com/questions/20138761/how-to-select-a-dropdown-value-in-selenium -webdriver) –

回答

0

一些小的調整代碼,請閱讀以下,如果可以接受的:

使用選擇對象而不是WebElement來查找ddl對象,因此您可以使用selectByIndex(根據您的代碼更容易)從列表中選擇元素。

+0

HI 感謝您的重播,但它沒有工作 – Shaq

+0

嗨 我想選擇國家一次,我發現它通過循環,因爲我看到數字「我」改變我想使用部分xpath,但我這樣做有困難。 // * [@ id ='sbOptions_14754899']/li [2]/a對於UNITED STATE // * [@ id ='sbOptions_14754899']/li [3]/a for AFGANISTAN // * [@ id ='sbOptions_14754899']/li [4]/a for ALBANIA 我可以是2/3/4 ...(after/li) 謝謝 – Shaq

0

在代碼中for循環之前,點擊Select Country,以便顯示國家列表,然後單擊您想選擇的國家。

driver.findElement(By.linkText('Select Country')).click(); 
+0

謝謝它沒有用,它沒用,因爲應用程序可以用不同的語言。 謝謝 – Shaq

+0

如果文本可以用語言改變,你可以用類名找到該元素,然後點擊它 - driver.findElement(By.className(「sbSelector」))。click();' – TDHM