Selenium使用xpath检查选定的下拉选项值

时间:2014-07-22 09:51:26

标签: selenium-webdriver

我在使用动态名称和ID在下拉列表中选择选项值时遇到问题。这是html。注意:我将从下拉列表中获取SELECTED OPTION VALUE。没有在上面选择一个值。

我使用了很多xpath包含但它不起作用。每次页面重新加载时,“[1]”都会改变。

您是否知道在此包含的正确xpath包含什么?顺便说一下,我正在使用网络驱动程序2.32

<select name="this.is.dynamic.which.change.every.page.loads[1].select" id="this.is.dynamic.which.change.every.page.loads[1].select"
    <option value> - Select </option>
    <option value="1"> Option1</option>
    <option value="2"> Option2</option>
    <option value="3"> Option3</option>
    <option value="4"> Option4</option>
    <option value="5"> Option5</option>
    <option value="6"> Option6</option>
</select>

2 个答案:

答案 0 :(得分:0)

您仍然可以使用XPath包含来匹配Select然后Option以明确匹配您的首选选项。

这将是像

这样的东西
//Select[contains(@name,'any frequent prefix')]/option[.='option']

//Select/option[.='option']

您好使用WebDriver API中的Select类

String path = "/Select[contains(@name,'any frequet prefix')]"

Select options = new Select(driver.findElement(By.xpath(path)));
options.getAllSelectedOptions();

System.out.println(options.getAllSelectedOptions());

如果它是“仅选择/下拉页面”

,则可以按标签查找元素

答案 1 :(得分:0)

这有点棘手,但我的方法是:

//get the value 
String name = driver.findElement(By.CssSelector(select)).getAttribute("name");
int flag = 0;
//loop for getting your dynamic number
for(int i=1; flag!=0; i++){
  if (name.charAt(i).isNumeric()){
    String num = name.charAt(i);
    flag = 1;
  }// end if
}//end for
// now get the value for the selected one
WebElement element = driver.findElement(By.CssSelector(select option:nth-child(num)));

它可能不起作用(如果你复制/过去)因为我无法测试并且我在工作。但你有想法得到你想要的东西。告诉我什么了。