gpt4 book ai didi

ruby - 如何在带有标签文本的 Watir 中选择单选按钮?

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:13 24 4
gpt4 key购买 nike

Watir 上的备忘单和文档显示了类似这样的内容来设置单选按钮

b.radio(:id => "radio").set

如何根据单选按钮旁边的文本选择单选按钮

有时这个文本在 label 标签内,有时它只是在一些 div/form 标签内。我们如何在 Watir 中处理这个问题??

(以下示例中的大写标签文本)

示例 1:

<form action="">
<input type="radio" value="male" name="sex"/>
MALE
<br/>
<input type="radio" value="female" name="sex"/>
FEMALE
</form>

示例 2:

<div class="isoversixteen_false_container">
<input id="isoversixteen_false" class="radio" type="radio" value="0" name="isoversixteen" autocomplete="off"/>
<label class="isoversixteen_false_label" for="isoversixteen_false">
<span class="label_main">UNDER 16</span>
</label>
</div>
<div class="isoversixteen_true_container">
<input id="isoversixteen_true" class="radio" type="radio" value="1" name="isoversixteen" autocomplete="off" checked="checked"/>
<label class="isoversixteen_true_label" for="isoversixteen_true">
<span class="label_main">16 OR OVER</span>
</label>
</div>

最佳答案

Orde 关于使用输入元素属性的评论是个好主意,因为它最容易编程。但是,要回答这个问题:

示例 1 - 相邻文本节点

在此示例中,所需的文本位于相邻的文本节点中。鉴于单选按钮共享同一个父级,我认为最简单的解决方案是使用 XPath:

browser.radio(xpath: '//input[following-sibling::text()[1][normalize-space(.) = "MALE"]]').set
browser.radio(xpath: '//input[following-sibling::text()[1][normalize-space(.) = "FEMALE"]]').set

XPath 说:

  1. 找到一个输入元素,其中
  2. 以下文本节点 - 即 [1]
  3. 具有文本“MALE”或“FEMALE”,忽略前导/后续空格 - 即 [normalize-space(.) = "FEMALE"]

示例 2 - 标签文本

在此示例中,复选框具有正确关联的标签元素 - 即复选框的 ID 与标签的 for 属性相匹配。 Watir 支持通过 :label 定位器通过标签文本定位元素:

browser.radio(label: 'UNDER 16').set
browser.radio(label: '16 OR OVER').set

示例 - 第一个跟随非空白文本节点

如果您想要一个适用于这两个示例的单一解决方案,以下似乎可行:

browser.radio(xpath: '//input[following::text()[normalize-space(.) != ""][1][normalize-space(.) = "UNDER 16"]]').set
browser.radio(xpath: '//input[following::text()[normalize-space(.) != ""][1][normalize-space(.) = "16 OR OVER"]]').set
browser.radio(xpath: '//input[following::text()[normalize-space(.) != ""][1][normalize-space(.) = "MALE"]]').set
browser.radio(xpath: '//input[following::text()[normalize-space(.) != ""][1][normalize-space(.) = "FEMALE"]]').set

此处的目的是找到包含文本的复选框后的第一个文本节点([normalize-space(.) != ""][1] 部分)并且该文本与预期文本([normalize-space(.) = "UNDER 16" 部分)。

关于ruby - 如何在带有标签文本的 Watir 中选择单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26218306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com