XPATH或CSS我在span标签中有一个复选框列表。我正在尝试选择一个特定的复选框

时间:2015-10-15 10:07:00

标签: css python-2.7 selenium xpath selenium-webdriver

我在HTML span标记中有一个复选框列表。在span标记中,有一个输入标记和一个标记标记。我想点击输入标签中的复选框,其中包含标签文字,例如“允许性别不匹配” 在我的XPATH中,我可以进入标签标签,但我不知道如何上升1,所以我可以点击输入标签。

我想帮助获取XPATH或CSS定位器。

我不能使用id =“gwt-uid-1204”,因为这是一个动态值。当您访问该页面时,它会发生变化

获取标签文本的我的XPATH是:

//div[@id="match_configuration_add_possible_tab_match_rules_fp_flags"]/span/label[contains(text(), "Allow gender mismatch")]

HTML代码段为:

<div id="match_configuration_add_possible_tab_match_rules_fp_flags">
    <div class="gwt-Label matchruleheader">Gender and title flags</div>
    <span class="gwt-CheckBox" style="display: block;">
        <input id="gwt-uid-1204" type="checkbox" value="on" tabindex="0"/>
        <label for="gwt-uid-1204">Gender must be present in both names</label>
    </span>
    <span class="gwt-CheckBox" style="display: block;">
        <input id="gwt-uid-1205" type="checkbox" value="on" tabindex="0"/>
        <label for="gwt-uid-1205">Gender must be consistent in both names</label>
    </span>
    <span class="gwt-CheckBox" style="display: block;">
        <input id="gwt-uid-1206" type="checkbox" value="on" tabindex="0"/>
        <label for="gwt-uid-1206">Allow gender mismatch</label>
    </span>
    <span class="gwt-CheckBox" style="display: block;">
    <span class="gwt-CheckBox" style="display: block;">
    <span class="gwt-CheckBox" style="display: block;">
    -- More checkboxes
</div>

谢谢Riaz

2 个答案:

答案 0 :(得分:2)

你至少有两种可能性:

1)使用xpaths&#34; ..&#34;去一个元素

//div[@id="match_configuration_add_possible_tab_match_rules_fp_flags"]/span/label[contains(text(), "Allow gender mismatch")]/../input

2)使用xpaths&#34; previous-sibling&#34;:

//div[@id="match_configuration_add_possible_tab_match_rules_fp_flags"]/span/label[contains(text(), "Allow gender mismatch")]/preceding-sibling::input

就个人而言,我更喜欢第一种方法,因为即使兄弟元素的顺序发生变化,它仍然有效。使用第二种方法,您总是需要检查兄弟姐妹是否在&#34;之前&#34;或&#34;以下&#34; (然后你必须使用following-sibling

答案 1 :(得分:1)

您需要将/preceding-sibling::input添加到当前的XPath中。所以最终的解决方案是:

//div[@id="match_configuration_add_possible_tab_match_rules_fp_flags"]/span/label[contains(text(), "Allow gender mismatch")]/preceding-sibling::input

这会选择所需的输入元素,因此您可以根据需要单击它。