xpath - 如何找到其中包含输入元素的嵌入 li?

标签 xpath

鉴于此 HTML:

<li class="check_boxes input optional" id="activity_roles_input">
    <fieldset class="choices">
        <legend class="label"><label>Roles</label></legend>
        <input id="activity_roles_none" name="activity[role_ids][]" type="hidden" value="" />
            <ol class="choices-group">
                <li class="choice">
                    <label for="activity_role_ids_104">
                        <input id="activity_role_ids_104" name="activity[role_ids][]" type="checkbox" value="104" />Language Therapist
                    </label>
                </li>
                <li class="choice">
                    <label for="activity_role_ids_103">
                        <input id="activity_role_ids_103" name="activity[role_ids][]" type="checkbox" value="103" />Speech Therapist
                    </label>
                </li>
            </ol>
    </fieldset>
</li>

我正在尝试使用 Selenium 和 xpath。
我正在尝试选择第一个“复选框”输入元素链接。
我在选择元素时遇到问题。
我不能使用数据库 ID (104),因为这是每次使用新 ID 进行重复测试。我需要选择“第一个”输入复选框,基于它具有语言治疗师的文本。

我试过了:
xpath=(//li[contains(@id,'activity_roles_input')])//input


xpath=(//li[contains(@id,'activity_roles_input')])//contains('Language Therapist")

但它没有找到元素。

当我做:
xpath=(//li[contains(@id,'activity_roles_input')])

它到达输入集。我遇到的问题是为“语言治疗师”选择第一个输入复选框控件。

最佳答案

首先,找到任何 <li>包含文本,然后在第一个复选框的后代中查找。

xpath=(//li[contains(., "Language Therapist")]/descendant::input[@type="checkbox"][1])

(来自迈克尔)

以上对我有用。最后我实际使用了
xpath=(//li[contains(@id,'activity_roles_input')]/descendant::input[@type="checkbox"][1])

因为我喜欢通过 css ID 进行 ID。

关于xpath - 如何找到其中包含输入元素的嵌入 li?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13711312/

相关文章:

xpath - Google Sheet importXml默认将时间值转换为十进制值

c# - 需要 xpath 表达式来循环通过 xmldocument

ajax - 使用 xpath 从 responseText 获取节点

xml - XPath 选择所有内容直到第一个 <br/>

python - Selenium Python - 测试页面中是否存在元素

xml - XPath child::* 与 child::node()

python - 在 xpath 中使用破折号在 py-dom-xpath 中不起作用

xml - xslt 使用分隔符连接一个类型的所有后代

java - 通过selenium java下载验证码

java - XPath/XQuery : How to retrieve all the array instead the first element when using