我有以下代码,我试图将单选按钮隔离成两个xpath表达式,这样我就可以在nightwatch中点击它们进行QA。
请记住此页面特别有许多其他单选按钮,因此表达式需要特定于此。此外,反应也是动态的,因此无法改变。非常感谢
<div class="form-group" data-reactid=".0.1.0.1.0.0">
<label class="control-label" data-reactid=".0.1.0.1.0.0.$label">
<span data-reactid=".0.1.0.1.0.0.$label.1" style="">Able to change e-mail</span>
</label>
<div class="wrapper" data-reactid=".0.1.0.1.0.0.$wrapper" style="">
<input type="radio" name="allow_change_email" checked="" data-reactid=".0.1.0.1.0.0.$wrapper.0:0" style="">
<span data-reactid=".0.1.0.1.0.0.$wrapper.0:1" style=""> Allow</span>
<br data-reactid=".0.1.0.1.0.0.$wrapper.0:2">
<input type="radio" name="allow_change_email" data-reactid=".0.1.0.1.0.0.$wrapper.0:3" style="">
<span data-reactid=".0.1.0.1.0.0.$wrapper.0:4" style=""> Disable</span>
</div>
答案 0 :(得分:1)
这是一个可能的XPath:(为便于阅读而格式化)
//label[span='Able to change e-mail']
/following-sibling::div[1]
/input[@type='radio' and following-sibling::span[1][normalize-space()='Allow']]
解释:
//label[span='Able to change e-mail']
:查找label
个元素,其中span
个内容等于"Able to change e-mail"
/following-sibling::div[1]
:从此类label
中找到最近的兄弟div
元素/input[@type='radio' and following-sibling::span[1][normalize-space()='Allow']]
:来自此div
,返回input
元素type
属性等于"radio"
和最近的兄弟span
{1}}等于"Allow"
<强> xpathtester demo
强>
输出
<input checked="" data-reactid=".0.1.0.1.0.0.$wrapper.0:0" name="allow_change_email" style="" type="radio"/>
答案 1 :(得分:0)
首先,您没有有效的XML。
如果你设法纠正它,你可以使用它:
//input[@type='radio']
&#39;更正&#39; XML:
<?xml version="1.0" encoding="utf-16"?>
<div class="form-group" data-reactid=".0.1.0.1.0.0">
<label class="control-label" data-reactid=".0.1.0.1.0.0.$label">
<span data-reactid=".0.1.0.1.0.0.$label.1" style="">Able to change e-mail</span>
</label>
<div class="wrapper" data-reactid=".0.1.0.1.0.0.$wrapper" style="">
<input type="radio" name="allow_change_email" checked="" data-reactid=".0.1.0.1.0.0.$wrapper.0:0" style="" />
<span data-reactid=".0.1.0.1.0.0.$wrapper.0:1" style=""> Allow</span>
<br data-reactid=".0.1.0.1.0.0.$wrapper.0:2" />
<input type="radio" name="allow_change_email" data-reactid=".0.1.0.1.0.0.$wrapper.0:3" style="" />
<span data-reactid=".0.1.0.1.0.0.$wrapper.0:4" style=""> Disable</span>
</div>
</div>
答案 2 :(得分:0)
允许: -
//div[@class='wrapper']/input[1][@type='radio']
禁用: -
//div[@class='wrapper']/input[2][@type='radio']
答案 3 :(得分:0)
我找到了可能处于相同情况的其他任何人的解决方案。
//*[text()="Able to change email"]/following::span[text()= " Allow"][1]/preceding-sibling::input[1]