如何通过xpath检索下拉列表中的文本

时间:2014-09-25 16:10:17

标签: selenium xpath selenium-webdriver

我想指定xpath到我的网页元素。

<select id=groupSelect>
   <option value="data" >First value</option>
    <option value="data" >second value</option>
</select>

我想获得&#34; First value&#34;这是选项内的文字。但我不知道如何获取文本。

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

2 个答案:

答案 0 :(得分:6)

selenium可以handle select/option以一种简单方便的方式。

以下是如何通过可见文本选择选项(例如java):

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

如果您仍想要基于xpath的解决方案,可以选中value选项和text

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

或通过索引获取:

By.xpath("//select[@id='groupSelect']/option[1]")

或者你可以检查两者。

答案 1 :(得分: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();

    }
    }
    }
    }