我正在做一個網路抓取專案,我遇到了一個問題,我無法通過使用find_element_by_xpath/id/css-selector/class_name和執行來定位元素(1H) click()。有誰知道如何使它作業?提前致謝!
這是我的代碼的一部分
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from datetime import timedelta, date
import time
import datetime
import re
import mouse
def scrape():
website = 'https://www.binance.com/en/trade-margin/BTC_USDT'
path = '/Users/admin/Downloads/chromedriver'
driver = webdriver.Chrome(path)
driver.get(website)
driver.maximize_window()
#click on 1H
actions = ActionChains(driver)
one_hour = driver.find_element_by_xpath('//div[@][@id='1h']')
actions.click(one_hour).perform()
這是html
#it is flexbox
<div class="css-e2pgpg">
<div id="Time" class="css-1pj8e72">Time</div>
<div id="15m" class="css-1pj8e72">15m</div>
<div id="1h" class="css-ktyfxp">1H</div> #i want to locate this element and perform click on it
<div id="4h" class="css-1pj8e72">4H</div>
<div id="1d" class="css-1pj8e72">1D</div>
<div id="1w" class="css-1pj8e72">1W</div>
</div>
uj5u.com熱心網友回復:
我自己去看了網頁。在我看來,您不必定位 flexbox 本身。
只需嘗試:
driver.find_element_by_id('1h').click();
另外,我會添加某種等待,直到頁面完全加載。您可以使用 Thread.sleep、隱式等待或等待元素。
uj5u.com熱心網友回復:
如果您只是想點擊1H web element,您可以使用下面的代碼來完成。我們必須誘導明確的等待來完成作業。
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get("https://www.binance.com/en/trade-margin/BTC_USDT")
try:
wait.until(EC.element_to_be_clickable((By.XPATH, "//div[text()='1H']"))).click()
print("Clicked")
except:
pass
進口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/421981.html
標籤:
