我正在尝试获取选择器的下拉选项。当我使用Chrome访问网站并使用F12查看HTML时,我正在处理的部分如下所示:
<select name="routeSelector" onkeypress="selectorKeyPress(this, event);
return false;" onfocus="clearKeyBuffer(this)"
onchange="selected(this);routeSelected()">
<option value="701">701</option>
<option value="702">702</option>
<option value="703">703</option>
<option value="104">104</option>
... etc
</select>
但是,当我使用selenium(java)访问此页面时,我得到了
<select name="routeSelector" onkeypress="selectorKeyPress(this, event);return false;" onfocus="clearKeyBuffer(this)" onchange="selected(this);routeSelected()">
<option selected="selected">
_________________________
</option>
</select>
因此我无法得到选项。
我的代码如下所示:
public class Foo {
public static void main(String[] args) {
HtmlUnitDriver driver = new HtmlUnitDriver();
try {
driver.get("http://***.html");
} catch (Exception e) {
System.out.println(e.toString());
}
driver.setJavascriptEnabled(true);
Select select = new Select(driver.findElement(By.name("routeSelector")));
List<WebElement> options = select.getOptions(); // return only 1 blank element as above
System.out.print(driver.getPageSource());
driver.quit();
}
我还试图点击选择器或刷新页面,这些都不起作用。我猜这个网页上有一些Javascript参与了吗?
提前致谢!
- Java版本7 Selenium版本2
答案 0 :(得分:0)
在阅读该页面的源代码后,我解决了这个问题。
所以我从页面中找到了一段JavaScript代码:
parent.addOption(routeSelector, "701", "701", false, false);
parent.addOption(routeSelector, "702", "702", false, false);
parent.addOption(routeSelector, "703", "703", false, false);
parent.addOption(routeSelector, "104", "104", false, true);
不知何故,这段代码在页面加载时被执行。如果您想在selenium中执行此操作,则必须手动执行这些代码。手动完成后,select.getOptions()
方法可以返回选项。