[英]Selenium IDE / Xpath verifying a checkbox is checked only if the element's label contains specific text
我正在寻找有关如何编写Xpath查询以验证是否选中了特定复选框的指导(嵌在panel-body div中的div是复选框)。 我试图做的是确保带有相应标签的复选框div包含文本“ Evaluations”,其中包含“ checked”类。 这是我的HTML:
<div class="panel-body">
<div class="checkradios-checkbox checkradios access icon-checkradios-checkmark checked">
<input id="access_conferences" class="checkradios access" name="access_conferences" value="true" checked="" type="checkbox">
</div>
<label for="access_conferences">Conferences</label>
<br>
<div class="checkradios-checkbox checkradios access icon-checkradios-checkmark checked">
<input id="access_evaluations_viewing" class="checkradios access" name="access_evaluations_viewing" value="true" checked="" type="checkbox">
</div>
<label for="access_evaluations_viewing">Evaluations - Viewing</label>
<br>
</div>
这是我的Xpath: //label[@for="access_evaluations_viewing"]/preceding::div[@class="checkradios-checkbox checkradios access icon-checkradios-checkmark checked"]
问题是,即使未选中该框,我的测试用例仍通过,这表明我的xpath正在捕获其他元素。 panel-body div中的其他一些复选框也将被选中,所以我认为可能正在发生的是我的Xpath正在使用“ checked”类检查下一个先前的div,而与div的标签文本无关包含。
编辑:按照建议,我尝试引用标签前面的div。 这样做的问题是,并非必须检查面板主体中的每个框。 我只需要确认已选中与“评估”相关的内容即可。 如果未选中“评估”以外的一个或多个框,则引用标签上方的div失败。 这是我修改过的Xpath:
//label[@for="access_evaluations_viewing"]/preceding-sibling::div[contains(@class, "unchecked")]
我切换到否定比较,因为contains(@class,“ checked”)会同时通过选中和未选中的框。
如果您需要匹配包含"Evaluations"
文本的标签,则可以尝试
//label[@for="access_evaluations_viewing"][contains(text(), "Evaluations")]/preceding::div[@class="checkradios-checkbox checkradios access icon-checkradios-checkmark checked"]
这4个元素是同级元素,因此在Label上时,必须转到上方的Div以获取复选框元素。
试试这个XPath:
//div[@class='panel-body']/label[contains(.,'Evaluations')]/preceding-sibling::div[1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.