selenium - 如何 'click' 单选按钮 -> 需要 xPath

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

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

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

<label class="HoldersInLineLabel">Rodzaj akcji</label>

<input type="radio" ng-model="holdersModel.OperationType" class="prettifiedIeCheckbox ng-valid ng-dirty" value="P" name="01H">
      "Przekazanie"
<input type="radio" ng-model="holdersModel.OperationType" value="D" class="prettifiedIeCheckbox ng-valid ng-dirty" name="01I">
     "Dekretacja"
<input type="radio" ng-model="holdersModel.OperationType" value="O" class="prettifiedIeCheckbox ng-valid ng-dirty" name="01J">
     "Inne akcje"

<span class="k-widget k-dropdown k-header ng-pristine ng-valid" unselectable="on" role="listbox" aria-haspopup="true" aria-expanded="false"...></span>

最佳答案

以下 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() (因为在此上下文中 * 表示“任何 element”;所以如果您想要该文本节点相反,您必须使用 text() 来明确指出)

  • 请在 following-sibling::*[position()=1] 中使用 [position()=1] 来表明您想要 first 跟随 sibling 。

关于selenium - 如何 'click' 单选按钮 -> 需要 xPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32355196/

相关文章:

oracle - 12c 和 ORA-01792 : maximum number of colum

r - 在 R 中将字符串拆分为固定长度元素的最快方法

html - 使用 ng-classes 样式输入占位符颜色样式

c# - 使用 UpdateAsync 方法 ASP.NET Entity Framework

shopify - Liquid 中的逗号分隔列表

symfony - 如何使用 symfony 2 使工作软删除和唯一实体

date - 同步系统时间和日期的批处理文件

amazon-web-services - AWS : How do I programmatica

c# - 如何使用 LinQ 按值分组获取字典中的键列表

css - 选择器属性中的手写笔迭代