2017-06-15 202 views
1

我想在下拉菜單中選擇一個選項。我無法使用選擇,因爲我沒有選擇ID。因爲然後我得到預期的選擇獲得按鈕。Selenium-webdriver幫助需要與選擇下拉菜單,而不是選擇選項

我能夠與打開下拉:

[FindsBy(How = How.XPath, Using = "//button[@data-id='Product_Contractor_Person_Contact_Country']")] 
    private IWebElement CountryDropdownElement { get; set; } 

我的代碼看起來如下:

<div class="col-lg-4 form-group"> 
    <label> 
    Land 
    </label> 
    <label class="select select-block"> 
     <select class="selectpicker" data-width="100%" id="Product_Contractor_Person_Contact_Country" name="Product.Contractor.Person.Contact.Country" style="display: none;"> 
     <option selected="selected" value="NL">Nederland</option> 
     <option value="BE">Belgie</option> 
     <option value="FR">Frankrijk</option> 
     <option value="UK">Engeland</option> 
     <option value="DE">Duitsland</option> 
     <option value="SE">Zweden</option> 
     <option value="ES">Spanje</option> 
     <option value="IT">Italie</option> 
     <option value="ZA">Zuid Afrika</option> 
     <option value="PL">Polen</option> 
     <option value="UA">Oekraïne</option> 
     <option value="ID">Indonesië</option> 
     <option value="HU">Hongarije</option> 
     <option value="PT">Portugal</option> 
     </select> 
     <div class="btn-group bootstrap-select" style="width: 100%;"> 
     <button type="button" class="btn dropdown-toggle selectpicker btn-default" data-toggle="dropdown" data-id="Product_Contractor_Person_Contact_Country" title="Nederland"><span class="filter-option pull-left">Nederland</span>&nbsp;<span class="caret"></span></button> 
     <div class="dropdown-menu open"> 
      <ul class="dropdown-menu inner selectpicker" role="menu"> 
       <li rel="0" class="selected"><a tabindex="0" class="" style=""><span class="text">Nederland</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="1"><a tabindex="0" class="" style=""><span class="text">Belgie</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="2"><a tabindex="0" class="" style=""><span class="text">Frankrijk</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="3"><a tabindex="0" class="" style=""><span class="text">Engeland</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="4"><a tabindex="0" class="" style=""><span class="text">Duitsland</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="5"><a tabindex="0" class="" style=""><span class="text">Zweden</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="6"><a tabindex="0" class="" style=""><span class="text">Spanje</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="7"><a tabindex="0" class="" style=""><span class="text">Italie</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="8"><a tabindex="0" class="" style=""><span class="text">Zuid Afrika</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="9"><a tabindex="0" class="" style=""><span class="text">Polen</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="10"><a tabindex="0" class="" style=""><span class="text">Oekraïne</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="11"><a tabindex="0" class="" style=""><span class="text">Indonesië</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="12"><a tabindex="0" class="" style=""><span class="text">Hongarije</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
       <li rel="13"><a tabindex="0" class="" style=""><span class="text">Portugal</span><i class="glyphicon glyphicon-ok icon-ok check-mark"></i></a></li> 
      </ul> 
     </div> 
     </div> 
    </label> 
</div> 

在我使用webdriver的硒與C#。

+0

一旦你得到了下拉webelement又名CountryDropdownElement ..,使用和創建一個選擇實例,然後通過索引/值和往常一樣 –

+0

我用selectElement.SelectByText(的SelectedValue) 我收到了選擇該選項以下錯誤:元素不可見:元素當前不可見,可能不會被操縱 – xxx2017

+0

您可以給出select的完整代碼嗎? –

回答

1

請嘗試以下代碼。我有它在Java中。

//click on dropdown 
    driver.findElement(By.xpath("//button[@data-id='Product_Contractor_Person_Contact_Country']")).click(); 

    //select option 
    List<WebElement> lstOptions= driver.findElements(By.xpath("//ul[contains(@class,'selectpicker')]/li/a/span")); 

    selectOption(lstOptions, "Zweden"); 

    public boolean selectOption(List<WebElement> lstOptions,String option){ 

    boolean isOptionAvailable=false; 

    for(WebElement eleOptions:lstOptions){ 
     if(eleOptions.getText().trim().equals(option.trim())){ 
      isOptionAvailable=true; 
      eleOptions.click(); 
      break; 
     } 
    } 

    return isOptionAvailable; 

} 
+0

代碼: 列表 lstOptions = driver.findElements(By.xpath(「// ul [contains(@ class,'selectpicker')]/a/span」)); 我想它做它在C#這樣的: 私人IWebElement NewCountryWithinDropdown(字符串dutchCountryName) { 回報 BrowserFactory.Driver.FindElement(By.XPath(的String.Format(「// UL [包含(@class ,'selectpicker')]/a/span,'{0}'「,dutchCountryName))); } } 我收到以下錯誤:無效的選擇器:無法找到xpath表達式的元素// ul [contains(@ class,'selectpicker')]/a/span,'Belgie' – xxx2017

+0

請嘗試以下私有IWebElement NewCountryWithinDropdown(string dutchCountryName){return BrowserFactory.Driver.FindElement(By.XPath(string.Format(「// ul [contains(@ class,'selectpicker')]/a/sp an [text( )='{0}']「,dutchCountryName)));} – Murthi

+0

謝謝。但我收到以下錯誤: 其他信息:無效的選擇器:找不到具有xpath表達式的元素// ul [contains(@ class,'selectpicker')]/a /由於以下錯誤,sp [text()='Belgie']: SyntaxError:無法對'Document'執行'評估':字符串'// ul [contains(@ class ,'selectpicker')]/a/sp an [text()='Belgie']'不是有效的XPath表達式。 – xxx2017

0

您必須首先點擊按鈕才能看到該項目。 這可以通過一個動作來完成。請參閱有關如何構建點擊操作的參考。

不完全匹配,但顯示它如何能做到: Nested Hover in Selenium C#

+0

我正在努力如何檢索值的位置例如我想選擇Belgie如何檢索這個值在哪裏 在您正在使用的鏈接中:Actions builder = new Actions(ngDriver ); var elementToClick = ngDriver.FindElement(By.ClassName(「dpcontract」)); – xxx2017

+0

您將在按鈕上執行點擊操作,以便項目(下拉列表)可見。 ,它應該能夠找到元素(參考你得到的錯誤:元素不可見:元素當前不可見並且可能不被操縱) –