我尝试在 ERC-20 链上获取令牌的前 20 名持有者。我用那个硒。似乎 xpath 没有加载/没有足够的时间?
我尝试加载此页面: https ://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#balances
我尝试了隐式等待和显式等待。我什至可以看到,当我运行 webdriver 时,侧面是加载的,但它从未找到路径......
显式等待的代码:
options = Options()
ptions.add_argument("--disable-dev-shm-using")
options.add_argument("--no-sandbox")
driver = webdriver.Chrome(chrome_options=options)
driver.get("https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#balances")
wait = WebDriverWait(driver, 10, poll_frequency=1)
wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="maintable"]/div[3]/table/tbody/')))
错误:
selenium.common.exceptions.TimeoutException: Message:
是的,连个消息都没有……
隐式代码:
options = Options()
ptions.add_argument("--disable-dev-shm-using")
options.add_argument("--no-sandbox")
driver = webdriver.Chrome(chrome_options=options)
driver.implicitly_wait(10)
driver.get("https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#balances")
for i in range(1,20):
req = driver.find_element_by_xpath('//*[@id="maintable"]/div[3]/table/tbody/tr['+str(i)+']/td[2]/span/a')
错误:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="maintable"]/div[3]/table/tbody/tr[1]/td[2]/span/a"}
所以就像我说的那样,驱动程序似乎没有足够的时间来加载页面,但即使有 20,30,... 秒,他们也找不到路径。
此外,当我从脚本打开的浏览器中复制 xpath 时,我可以找到 xpath。