考虑以下超文本标记语言:
<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']")
但这不适用于更深的嵌套
有什么想法吗?
超文本标记语言
<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)