繁体   English   中英

无法使用 selenium 中的 xpath 在网页上定位元素(python)

[英]Unable to locate element on a webpage using xpath in selenium (python)

我正在尝试从一个名为: https ://dexscreener.com/ethereum/0x1a89ae3ba4f9a97b10bac6a77061f00bb956858b 的网站获取一些数据,我正在尝试获取元素:/html/body/div[1]/div/main/div/div [2]/div/div[2]/div/div/div[1]/div[4]/div[2]/div[1]/div[1]/div[2]/span[2] 其中基本上是网页上代表音量的数字。

我在这里使用了这段代码:

driver.get('https://dexscreener.com/ethereum/' + str(tokenadress))
try:
    fivemVolume = WebDriverWait(driver, delay).until(EC.presence_of_element_located(
        (By.XPATH,         '/html/body/div[1]/div/main/div/div[2]/div/div[2]/div/div/div[1]/div[4]/div[2]/div[1]/div[1]/div[2]/span[2]')))
except:
   #more codee

我认为这与默认加载到某些 iframe 的网页有关,但是当我添加此代码时它没有帮助:

driver.switch_to.default_content()

您的定位器与该页面上的任何元素都不匹配。
您尝试访问的元素在 iframe 中。
因此,您首先需要切换到 iframe。
以下代码应该可以工作,但我在该页面上运行 Selenium 时遇到问题,因为它被 cloudflare 阻止了:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

options = Options()
options.add_argument("start-maximized")

webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(options=options, service=webdriver_service)
wait = WebDriverWait(driver, 30)

url = "https://dexscreener.com/ethereum/0x1a89ae3ba4f9a97b10bac6a77061f00bb956858b"
driver.get(url)

wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe[id*='tradingview']")))

value = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "[data-name='legend-source-item'] [class='valueItem-1WIwNaDF'] .valueValue-1WIwNaDF"))).text
print(value)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM