繁体   English   中英

Selenium IDE / Xpath仅在元素标签包含特定文本的情况下才选中验证复选框

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM