在标签附近输入元素的 XPath?
XPath to input element near a label?
我正在尝试引用包含下划线的特定名称标签旁边的复选框。
一个例子DOM看起来像
<div id="form-2143">
<div id="wrap-1353">
<label id="numberfield-1234-label">
<span class="x-form-label">admin_user </span>
</label>
<input type="checkbox" id="checkbox-1353"
class="form-field" componentid="cb1353">
</div>
...
</div>
目标是 select input
元素,以便我可以在 Selenium 中单击它。
根据我的理解,下面的 XPath 应该可以工作
//label[span[contains(string(),"admin_user")]]../input
问题是上面的方法有效,但只适用于 'admin' 而不是 'admin_user'。
仅与 'admin' 一起使用会得到多个结果。我只能猜测它与“_”有关,尽管它很容易成为我正在测试的网站的一个怪癖。
我也不能保证标签和输入的顺序,因此先上后下
您忘记重新升级了
//label//span[contains(text(),'admin_user')]/../../input
例如:用"admin_user"和"admin_test"两个例子
<div id="form-2143">
<div id="wrap-1353">
<label id="numberfield-1234-label">
<span class="x-form-label">admin_user</span>
</label>
<input type="checkbox" id="checkbox-1353" class="form-field" componentid="cb1353">
</div>
<label id="numberfield-1234-label">
<span class="x-form-label">admin_test</span>
</label>
<input type="checkbox" id="checkbox-1353" class="form-field" componentid="cb1353">
</div>
</div>
下划线 (_
) 在 XPath(子)字符串测试中不需要特殊规定。
鉴于您的 HTML 更正为格式正确,
<div id="form-2143">
<div id="wrap-1353">
<label id="numberfield-1234-label">
<span class="x-form-label">admin_user </span>
</label>
<input type="checkbox" id="checkbox-1353"
class="form-field" componentid="cb1353"/>
</div>
...
</div>
这个 XPath,
//div[label[contains(., 'admin_user')]]/input
选择包含在 div
中的 input
元素,该元素包含一个 label
,其字符串值包含子字符串 admin_user
.
我正在尝试引用包含下划线的特定名称标签旁边的复选框。
一个例子DOM看起来像
<div id="form-2143">
<div id="wrap-1353">
<label id="numberfield-1234-label">
<span class="x-form-label">admin_user </span>
</label>
<input type="checkbox" id="checkbox-1353"
class="form-field" componentid="cb1353">
</div>
...
</div>
目标是 select input
元素,以便我可以在 Selenium 中单击它。
根据我的理解,下面的 XPath 应该可以工作
//label[span[contains(string(),"admin_user")]]../input
问题是上面的方法有效,但只适用于 'admin' 而不是 'admin_user'。 仅与 'admin' 一起使用会得到多个结果。我只能猜测它与“_”有关,尽管它很容易成为我正在测试的网站的一个怪癖。 我也不能保证标签和输入的顺序,因此先上后下
您忘记重新升级了
//label//span[contains(text(),'admin_user')]/../../input
例如:用"admin_user"和"admin_test"两个例子
<div id="form-2143">
<div id="wrap-1353">
<label id="numberfield-1234-label">
<span class="x-form-label">admin_user</span>
</label>
<input type="checkbox" id="checkbox-1353" class="form-field" componentid="cb1353">
</div>
<label id="numberfield-1234-label">
<span class="x-form-label">admin_test</span>
</label>
<input type="checkbox" id="checkbox-1353" class="form-field" componentid="cb1353">
</div>
</div>
下划线 (_
) 在 XPath(子)字符串测试中不需要特殊规定。
鉴于您的 HTML 更正为格式正确,
<div id="form-2143">
<div id="wrap-1353">
<label id="numberfield-1234-label">
<span class="x-form-label">admin_user </span>
</label>
<input type="checkbox" id="checkbox-1353"
class="form-field" componentid="cb1353"/>
</div>
...
</div>
这个 XPath,
//div[label[contains(., 'admin_user')]]/input
选择包含在 div
中的 input
元素,该元素包含一个 label
,其字符串值包含子字符串 admin_user
.