xpath上升到父母然后回到孩子

时间:2017-05-19 00:28:35

标签: node.js web selenium-webdriver cucumber selenium-chromedriver

    <div class="classA">
        <label class="classB">
            <span>Referral Date</span>
        </label>
        <div>
            <input class="classC">
        </div>
     </div>

我正在使用xpath来抓住'推荐日期'。这是一项要求,因为用户将把这个人类可读的标签传递给我。我知道如何到达那里:

    //div/label[@class="classB"]/span[text()="Referral Date"]

现在,我需要访问输入[@ class =“classC”]才能在我的WebDriver Automation中单击它。我可以这样做吗?

    //div/label[@class="classB"]/span[text()="Referral Date"]
    /parent::div/div/input[@class="classC"]

嗯,这对我不起作用。

我也尝试了这个没有成功:

    //div/label[@class="classB"]/span[text()="Referral Date"]
    /following-sibling::div/input[@class="classC"]

没有用,我不认为它可以,因为跟随兄弟只指内部的节点。正确?

2 个答案:

答案 0 :(得分:1)

span的父级是label而不是div。 试试这些

//div/label[@class="classB"]/span[text()="Referral Date"]/ancestor::div[@class="classA"]//input[@class="classC"]

//div/label[@class="classB"]/span[text()="Referral Date"]/parent::label/parent::div//input[@class="classC"]

//div/label[@class="classB"]/span[text()="Referral Date"]/parent::label/following-sibling::div/input[@class="classC"]

答案 1 :(得分:0)

XPath下方尝试匹配所需的input

//div/label[@class="classB"]/span[text()="Referral Date"]/following::input[@class="classC"]