提问者:小点点

如何在Selenium上使用XPATH语法选择元素Python?


考虑以下超文本标记语言:

<div id='a'>
  <div>
    <a class='click'>abc</a>
  </div>
</div>

我想单击abc,但是包装div可能会改变,所以

driver.get_element_by_xpath("//div[@id='a']/div/a[@class='click']")

不是我想要的

我试过:

 driver.get_element_by_xpath("//div[@id='a']").get_element_by_xpath(.//a[@class='click']")

但这不适用于更深的嵌套

有什么想法吗?


共3个答案

匿名用户

超文本标记语言

<div id='a'>
  <div>
    <a class='click'>abc</a>
  </div>
</div>

您可以将XPATH用作:

//div[@id='a']//a[@class='click']

输出

<a class="click">abc</a>

也就是说你的Python代码应该是:

driver.find_element_by_xpath("//div[@id='a']//a[@class='click']")

匿名用户

在最新版本4. x中,现在是:

elem = driver.find_element(By.XPATH, "/html/body/div[1]/div/div[2]/h2/a")

要导入By

from selenium.webdriver.common.by import By

匿名用户

Selenium 4. X~
在现实场景中,我们需要过滤XPATH来提取数据。
例如,亚马逊网站下方:
https://www.amazon.ca/gp/product/B09NZ72B5X/ref=ewc_pr_img_1?smid=A3VU3XJC72QOSZ

在提取项目的XPATH时,我们最终得到“/text()”。我删除了它,它对我有用。

价格=驱动程序。find_element(by. XPATH, '//*[@id="corePriceDisplay_desktop_feature_div"]/div[1]/span[1]/span[2]/span[2]')
print(price.text)