首页 文章

仅当元素的标签包含特定文本时,才会检查Selenium IDE / Xpath验证复选框

提问于
浏览
0

我正在寻找一些关于如何编写Xpath查询以验证是否选中了特定复选框的指导(嵌套在panel-body div中的div是复选框) . 我试图做的是确保带有包含文本“Evaluations”的相应标签的复选框div包含“已检查”类 . 这是我的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正在检查下一个前面的div与一个“已检查”类,而不管div的标签是什么文本包含的内容 .

编辑:如建议的那样,我尝试引用标签前面的div . 这样做的问题在于,不一定要检查面板体中的每个盒子 . 我只需要确认检查与“评估”相关的那些 . 当取消选中除“评估”之外的一个或多个框时,引用标签上方的div将失败 . 这是我修改过的Xpath:

//label[@for="access_evaluations_viewing"]/preceding-sibling::div[contains(@class, "unchecked")]

我切换到负面比较,因为包含(@class,“checked”)将为已检查和未选中的框传递 .

2 回答

  • 0

    如果您需要匹配包含 "Evaluations" 文本的标签,您可以尝试

    //label[@for="access_evaluations_viewing"][contains(text(), "Evaluations")]/preceding::div[@class="checkradios-checkbox checkradios access icon-checkradios-checkmark checked"]
    
  • 0

    这四个元素是兄弟,所以当你在Label时,你必须到上面的Div来获取checkbox元素 .

    Try this XPath:

    //div[@class='panel-body']/label[contains(.,'Evaluations')]/preceding-sibling::div[1]
    

相关问题