Java By.cssSelector()在单选按钮上找不到元素-what';这里丢了什么?
你知道我做错了什么吗 以下是我的HTML代码,我尝试执行相同的操作,但未找到元素: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&
<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();