使用条件简化Xpath列表选择

时间:2020-07-03 13:28:13

标签: python selenium xpath

我们有一个HTML代码中的divX列表:

DivX
    Div
        Div1
            img
        Div2
            Div1
                Div
                    Div text()=Pseudo
            Div2
                Div
                    Divtext()=name
        Div3
            Button
                Span text()=Activate

并且我们需要关注Activate,其中Pseudo =“ hello”。这是我编码的长答案:

find element by xpath (span[text()=Activate]/parent::button/parent::div/parent::div/div[2]/div[1]/div/div[text()=pseudo]/parent::div/parent::div/parent::div/parent::div/div[3]/button/span).clic()

有更简单的方法吗?通过逃避写很多次“父母”?

2 个答案:

答案 0 :(得分:1)

您可以使用:

driver.find_element_by_xpath ("//div[text()='pseudo']//following::span[text()='Activate']").click()

答案 1 :(得分:0)

另一个选择:

driver.find_element_by_xpath ("//span[.='Activate'][preceding::div[.='hello']]").click()   

我不理解您复杂的XPath表达式,但是如果您要替换多个parent轴,请使用ancestor。它看起来像:

//span[text()="Activate"]/ancestor::div[2]/div[2]/div/div/div[text()="hello"]/ancestor::div[4]/div[3]/button/span
相关问题