我们有一个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()
有更简单的方法吗?通过逃避写很多次“父母”?
答案 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