Java By.cssSelector()在单选按钮上找不到元素-what';这里丢了什么?

Java By.cssSelector()在单选按钮上找不到元素-what';这里丢了什么?,java,selenium,webdriver,Java,Selenium,Webdriver,你知道我做错了什么吗 以下是我的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&

你知道我做错了什么吗

以下是我的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>
我看到的错误是:

线程“main”org.openqa.selenium.NoSuchElementException中的异常: 找不到元素:{“方法”:“css” 选择器“,”选择器“:“输入[id='check_one way'][value='0'] [type='radio']”} 命令持续时间或超时:13毫秒


为什么不使用
driver.findElement(By.id(“check\u oneway”))

对于CSS选择器,请使用.cssSelector的
input[id='check\u oneway'][value='0'][type='radio']


值和类型筛选器之间有空格,这就是选择器不起作用的原因。

为什么不使用
driver.findElement(By.id(“check_oneway”)

对于CSS选择器,请使用.cssSelector的
input[id='check\u 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();

您需要将驱动程序的上下文设置为元素所在的帧。 试试这个:

WebDriver driver = new FirefoxDriver();
driver.get("http://flight.ca");
driver.switchTo().frame(0);
driver.findElement(By.cssSelector("#check_oneway")).click();

我同意,只要看身份证就行了。那应该是独一无二的。如果您要使用value,那么如果值恰好为1,您将找不到单选按钮。很抱歉,即使在删除空格和By.id后我也尝试过,但仍然会给出相同的错误。但下面的第二种方法奏效了。你的html中有iFrame吗?我同意,只需按id就行了。这应该是唯一的。如果您要使用value,那么如果值恰好为1,您将找不到单选按钮。很抱歉,即使在删除空格和By.id后我也尝试过,但仍然会给出相同的错误。但下面第二种方法有效。你们的html中有iFrame吗?这种方法有效!但想知道我们为什么在这里使用switchTo()吗?实际上,我想知道什么会表明我需要为框架设置上下文。谢谢你的帮助!框架是网页中的网页。要知道元素是否在框架内,需要检查DOM,并检查它是否在or内。这种方法有效!但想知道我们为什么在这里使用switchTo()吗?实际上,我想知道什么会表明我需要为框架设置上下文。谢谢你的帮助!框架是网页中的网页。要知道元素是否在框架内,需要检查DOM,并检查它是否在or内。
driver.findElement(By.cssSelector("input[id=check_oneway][value=0][type=radio]")).click();
driver.findElement(By.id("check_returndate")).click();