问题描述
请,我不知道为什么,但是我无法单击此单选按钮。
我正在尝试通过xpath,css,id ...,但是一切正常。
总是出现错误:没有这样的元素:无法找到元素
现在,我正在尝试,但效果不佳:
WebElement radio = driver.findElement(By.xpath(“ // div [@ class ='form-inputs-container'] / ul / li [3] / label”));
radio.click();
我需要点击此网站上的多个目标电台:
https://www.turismocity.com.br/
能帮我吗?
解决方法
您的xpath似乎不正确,请尝试在xpath下使用
//form[@class="tc-form-full-flight"]//label[@for="tt1"]/following-sibling::div
对于第一个单选按钮://form[@class="tc-form-full-flight"]//label[@for="tt1"]/following-sibling::div
对于第二个单选按钮://form[@class="tc-form-full-flight"]//label[@for="tt2"]/following-sibling::div
对于第三个单选按钮://form[@class="tc-form-full-flight"]//label[@for="tt3"]/following-sibling::div
希望这会有所帮助!
,这应该在//input[@id='tt3']
或//input[@value='MultiDestino']
上起作用
您可以像这样$x("//input[@value='MultiDestino']")
您返回的空xpath []
,定位器不正确。不仅如此-即使有效,这种查找元素的方法也不可靠(您使用了元素位置-[3]以更改顺序,定位器将制动)。我建议使用CSS选择器:
input[value='MultiDestino']
,
对于定位器,您应该始终从极不可能更改的内容开始。通常,这是ID,名称和各种其他自定义属性,具体取决于站点。在此站点的情况下,您正在查看的三个单选按钮都有一个ID。
旁注...有时网站/页面不遵守要求ID在页面上唯一的HTML标准,因此即使您所需的元素具有ID,也请始终检查以确保其在页面上唯一。在这种情况下,这些ID是唯一的。
要单击“多个目标”单选按钮,可以使用下面的代码。
driver.findElement(By.id("tt3")).click();
在您的一些评论中,Selenium似乎很难单击INPUT本身,并且LABEL正常工作。如果是这种情况,那么您可以稍微更改定位器并使用下面的代码
driver.findElement(By.cssSelector("#tt3 + label")).click();
在上面的CSS选择器中,#表示ID,+表示下一个同级。有关更多信息,请参见the W3C docs。