这是已经选择的内容:
<input type="radio" tabindex="0" name="accounts" onclick="populateSelection();" value="MC Credit ***388.37***" checked="">
CSS选择器:body > form > span > table > tbody > tr:nth-child(5) > td.walletDispaly > input[type="radio"]
xpath:/html/body/form/span/table/tbody/tr[4]/td[1]/input
这是我要选择的:
<input type="radio" tabindex="1" name="accounts" onclick="populateSelection();" value="Savings ***388.37***">
CSS选择器:body > form > span > table > tbody > tr:nth-child(7) > td.walletDispaly > input[type="radio"]
xpath:/html/body/form/span/table/tbody/tr[5]/td[1]/input
到目前为止我尝试过的事情:
driver.findElement(By.xcode("//input[@name='accounts'][2]"));
driver.findElement(By.xcode("//input[@type='radio'][@name='accounts'][position()=2]"));
driver.findElement(By.id("accounts"))
driver.findElement(By.name("accounts"))
driver.findElement(By.cssSelector("[tabindex='1']")
答案 0 :(得分:0)
为什么xpath不起作用:
//input[@name='accounts'][2]
//input[@type='radio'][@name='accounts'][position()=2]
如果你们两个元素都有同级关系,那么只有它起作用。
例如
<div>
<input type="radio" tabindex="0" name="accounts" onclick="populateSelection();" value="MC Credit ***388.37***" checked="">
<input type="radio" tabindex="1" name="accounts" onclick="populateSelection();" value="Savings ***388.37***">
<div>
但是您似乎没有这种方式的元素。
driver.findElement(By.id("accounts"))
您的元素中没有id属性,因此它将无法正常工作。
By.name("accounts")
By.cssSelector("[tabindex='1']")
具有相同属性的页面上有多个元素,因此它在第一个元素上执行操作,而对于预期的元素则看不到它。可能是第五名的原因。
解决方案:
确保您唯一地定位元素。您需要自定义xpath。请尝试以下解决方案:
通过.xpath
//input[contains(@onclick,'populateSelection')][contains( @value,'Savings')]
OR
//input[@tabindex='1'][@name='accounts']
答案 1 :(得分:0)
使用相对xpath 代替使用绝对xpath 。对于 HTML 为:
<input type="radio" tabindex="1" name="accounts" onclick="populateSelection();" value="Savings ***388.37***">
您可以使用以下任一解决方案:
cssSelector
:
driver.findElement(By.cssSelector("input[name='accounts'][value^='Savings']")).click();
xpath
:
driver.findElement(By.xpath("//input[@name='accounts' and starts-with(@value,'Savings')]")).click();