如何点击'单选按钮 - > xPath需要

时间:2015-09-02 13:56:37

标签: selenium xpath selenium-webdriver

我需要检查三个单选按钮中的一个。我试过这段代码:

if (this == obj) {
            return true;
        }

但我认为这是错误的方式。

//input[@type='radio']/following-sibling::*[contains(., 'Inne akcje')]

3 个答案:

答案 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();