有没有想过我在这里做错了什么?
这是我的 HTML 代码,我正在尝试做同样的事情,但我找不到元素:
<div class="cell option">
<div class="form chk left">
<input id="check_returndate" type="radio" checked="" value="1" name="return"/>
<label for="check_returndate">Round trip</label>
</div>
<div class="form chk left">
<input id="check_oneway" type="radio" value="0" name="return"/>
<label for="check_oneway">One way</label>
</div>
</div>
而且,这是我正在使用的java代码:
driver.get("http://flight.ca/");
//accessing radio button
driver.findElement(By.cssSelector("input[id='check_oneway'][value='0'] [type='radio']")).click();
我看到的错误是:
线程"main"org.openqa.selenium.NoSuchElementException中的异常: 无法找到元素: {"方法":"css 选择器","选择器":"输入[id='check_oneway'][值='0'] [type='radio']"} 命令持续时间或超时:13 毫秒
你为什么不使用driver.findElement(By.id("check_oneway"))
对于 CSS 选择器,请使用By.cssSelector("input[id='check_oneway'][value='0'][type='radio']")
值和类型过滤器之间有空格,这就是选择器不起作用的原因。
需要将驱动程序的上下文设置为元素所在的框架。试试这个:
WebDriver driver = new FirefoxDriver();
driver.get("http://flight.ca");
driver.switchTo().frame(0);
driver.findElement(By.cssSelector("#check_oneway")).click();
driver.findElement(By.cssSelector("input[id=check_oneway][value=0][type=radio]")).click();
driver.findElement(By.id("check_returndate")).click();