selenium - 需要帮助查找标签旁边输入字段的 xpath

标签 selenium xpath

我有一个像这样的dom结构

<tr class="">
<td class="labelCol requiredInput">
    <label for="name_lastacc2" class="">
        <span class="requiredMark">*</span>
    Last Name</label>
</td>
<td class="dataCol col02">
    <div class="requiredInput">
        <div class="requiredBlock"></div>
        <input id="name_lastacc2" maxlength="80" name="name_lastacc2" size="20" tabindex="3" type="text"></div>
    </td>
    <td class="labelCol">
        <label for="00NG0000008Rybp">Business Ext.</label>
    </td>
    <td class="dataCol">
        <input id="00NG0000008Rybp" maxlength="10" name="00NG0000008Rybp" size="20" tabindex="22" type="text"></td>
    </tr>

我正在尝试找到其标签旁边的输入框。

例如:

姓氏:________________

我尝试过使用像

这样的 xpath 查询
//label[contains(text(),'Last Name']/../following-sibling::*/div/input[@type='text'] 

但我收到 [INVALID XPATH EXPRESSION] 错误。我哪里出错了?

最佳答案

您的路径表达式缺少 contains() 的右括号。

//label[contains(text(),'Last Name')]/../following-sibling::*/div/input[@type='text']

但是话虽如此,我认为您的路径表达式现在不正确。您的表达式将匹配 label[contains(text(),'Last Name')] 父级的以下同级任何。您希望它找到的是紧随其后的 input 元素。

您的原始表达式只能找到一个 input 元素的唯一原因是第二个元素嵌套在另一个 div 中。但我认为你不应该依赖它。

相反,请尝试:

//label[contains(.,'Last Name')]/following::input[1]

那么结果就是

<input id="name_lastacc2" maxlength="80" name="name_lastacc2" size="20" tabindex="3" type="text"/>

关于selenium - 需要帮助查找标签旁边输入字段的 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27216225/

相关文章:

java - 四个相同的 Selenium 测试给出不同的结果

selenium - 如何将 RemoteWebDriver 指向多个独立 docker selenium 独立 chrome 浏览器之一?

java - 条件的 XPath 语法

php - 查询多个选择器的 XPath

java - 使用 Java 和 xPath 在 OWL/XML 文件中提取节点后命名空间前缀未声明错误

xml - 如何使用 xslt 或 xpath 将注释添加到 xml 文件

java - 无法创建新的远程 session 。罂粟属

testing - cucumber + capybara + Selenium : selecting text

java - 如何使用 phantomjs 设置 clj-webdriver 0.7.2

c# - xpath-查找元素的多个顺序出现