我试图通过它的Xpath或Id单击一个单选按钮。 我使用Google Developer Tool检查了该元素,并且能够获得以下详细信息:
元素名称:<label for="1346_Voltagem_0"
class="dimension-Voltagem espec_0 skuespec_110v
skuespec_Voltagem_opcao_110V
skuespec_Voltagem_opcao_110v">110V</label>
的Xpath:
/html/body/div[9]/div/div/div[3]/div[3]/div[1]/div/ul/li[2]/span/label[1]
我想知道如何对代码说它必须点击那个radiobutton?
Click here表示我要点击radioButton的页面。另外,请参阅以下屏幕截图,了解确切的元素
答案 0 :(得分:0)
避免使用绝对xpath,因为UI中的小变化将导致在代码中进行大量更改。 对于您的问题,以下xpath将起作用。
driver.findElement(By.xpath("//label[text()='110V']")).click();
driver.findElement(By.xpath("//label[contains(@class,'110v')]")).click();
答案 1 :(得分:0)
试试这个:
driver.findElement(By.xpath("//input[@class='skuselector-specification-label input-dimension-Voltagem sku-selector skuespec_110v change-image']")).click();
答案 2 :(得分:-1)
您应该使用xpath
,因为您需要找到label
,然后找到之前的输入
您可以使用
找到标签//div[contains(@class,'prod-sku-selector')]//label[.='110V']
现在要获取之前的input
,您可以使用
//div[contains(@class,'prod-sku-selector')]//label[.='110V']/preceding-sibling::input[1]
答案 3 :(得分:-1)
我一直认为xpath不应该太依赖于你的html div和层次结构,因为即使改变最小也很容易失败。所以,使用xPath就像&#34; / html / body / div [9] / div / div / div [3] / div [3] / div [1] / div / ul / li [2] / span / label [1]&#34;不是一个好选择。
在这种情况下,我建议你使用下面的xpath:
如果需要点击第一个单选按钮:
//div[contains(@class, 'prod-sku-selector')]//input[@type='radio'][1]
如果需要点击值为110v的单选按钮:
//div[contains(@class, 'prod-sku-selector')]//input[contains(@value, '110V')]
然后你可以使用:
获取元素radioBtn1 = findElement(By.xpath("//div[contains(@class, 'prod-sku-selector')]//input[@type='radio'][0]"));
此外,您可以使用以下方式点击硒中的无线电:
radioBtn1.click();