By.cssSelector() 在单选按钮上找不到元素 - 这里缺少什么?



有没有想过我在这里做错了什么?

这是我的 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();

相关内容

最新更新