我在使用动态名称和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>
答案 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)));
它可能不起作用(如果你复制/过去)因为我无法测试并且我在工作。但你有想法得到你想要的东西。告诉我什么了。