我需要检查三个单选按钮中的一个。我试过这段代码:
if (this == obj) {
return true;
}
但我认为这是错误的方式。
//input[@type='radio']/following-sibling::*[contains(., 'Inne akcje')]
答案 0 :(得分:1)
以下XPath表达式将只获得您想要的input
元素:
//input[@type='radio'][following-sibling::text()[position()=1][contains(., 'Inne akcje')]]
返回此元素:
<input type="radio" ng-model="holdersModel.OperationType" value="O"
class="prettifiedIeCheckbox ng-valid ng-dirty" name="01J" />
与原始XPath表达式的主要区别在于:
不要使用语法input[@type='radio']/following-sibling…
;而是使用//input[@type='radio'][following-sibling…
。
不要使用following-sibling::*
;而是使用following-sibling::text()
(因为在此上下文中*
表示“任何元素”;因此,如果您想要该文本节点,则必须使用{{1}明确指出它而不是)
请在text()
中使用[position()=1]
表示您希望第一个跟随兄弟姐妹。
答案 1 :(得分:1)
Xpath似乎变得更复杂,在这种情况下长期难以维护。对于这些单选按钮,名称似乎是唯一的。它们不是静止的吗?如果是,那么你可以使用name作为选择器。如果你真的想使用xpath,那就试试像
这样简洁的东西.//input[contains(@name, '01J') and text() = 'Inne akcje']
答案 2 :(得分:1)
我同意nilesh关于XPath的观点。以下是使用CSS选择器执行此操作的方法。
WebElement przekazanie = driver.findElement(By.cssSelector("input[value='P']"));
WebElement dekretacja = driver.findElement(By.cssSelector("input[value='D']"));
WebElement inneAkcje = driver.findElement(By.cssSelector("input[value='O']"));
// pick the one you want to click and .click() it
przekazanie.click();