2014-09-25 77 views
2

我想指定xpath到我網頁的一個元素。如何通過xpath檢索下拉列表中的文本

我想獲得「第一個值」,它是選項中的文本。但我不知道如何獲得文本。

By.xpath("//select[@id='groupSelect']/option[@value=???']")) 
+0

是您正在使用的硒和java綁定? – alecxe 2014-09-25 16:15:08

回答

4

selenium可以在一個很好的和方便的方式handle select/option

這裏是你如何選擇由可視文本的選項(在Java爲例):

Select select = new Select(driver.findElement(By.id("groupSelect"))); 
select.selectByVisibleText('First value'); 

如果你仍然想有一個基於XPath的解決方案,可以選中該選項valuetext

By.xpath("//select[@id='groupSelect']/option[@value='data' and . = 'First value']") 

或指數得到它10

或者您可以檢查兩者。

+0

感謝您的回答,如果我想獲得第三個選項元素,並且想要檢查該元素是否存在,我該如何測試它?其實我不知道我在下拉列表中有多少項。 – user3409650 2014-09-26 07:40:48

+0

@ user3409650您可以將調用'select.selectByVisibleText('Third value');'放入'try/catch'塊中,查看是否拋出了org.openqa.selenium.NoSuchElementException異常 - 如果拋出 - 沒有這樣的選擇。希望你明白我想說的話。 – alecxe 2014-09-26 12:19:29

1
import java.util.List; 
    import org.openqa.selenium.By; 
    import org.openqa.selenium.WebDriver; 
    import org.openqa.selenium.WebElement; 
    import org.openqa.selenium.firefox.FirefoxDriver; 

    public class Example { 
    public static void main(String[] args) { 
    WebDriver driver = new FirefoxDriver(); 
    driver.get("http://www.Example.com/"); 
    //List the Values 
    List<WebElement> options = driver.findElements(By.xpath("//*[@id='m']//option")); 
    //Count the Values 
    System.out.println(options.size()); 

    for(int i=0;i<options.size();i++){ 
    //Print the text 
    System.out.println(options.get(i).getText()); 

    String optionName = options.get(i).getText(); 
    //If u want to select the perticular Value 
    if(optionName.equals("xxxxx")){ 
    //Instead of xxxxx u put the value option 1 or 2 or 3 like that 
    //If the value of option 1 is like Books, u want to select that put Books replace with xxxxx 
    options.get(i).click(); 

    } 
    } 
    } 
    } 
相關問題