我一直試圖搜刮這個網站鏈接我對點擊第一個DONWLOAD按鈕感興趣。然而,每當我試圖找到任何作為按鈕的元素時,我都找不到。
下面是代碼。
以下是代碼 :
url = 'https://ember-climate.org/data/carbon-price-viewer/'
webdriver = create_driver()
with webdriver as driver:
driver.maximize_window()
driver.get(url)
wait = WebDriverWait(driver, 30)
try:
wait.until(EC.element_to_be_clickable((By.XPATH, '//button'))
except:
pass。
ids = driver.find_elements_by_xpath('//button')
for ii in ids:
print (ii.tag_name, ii.get_attribute('class')
是XPath有問題還是網站本身有問題?
uj5u.com熱心網友回復:
你的xpath是錯誤的,Download button被包裹在span tag而不是button tag。
嘗試這樣做 :
//span[contains(text(),'Down')]
另外,我看到它是在iframe中,可以通過
定位iframe[name='ETS']
CSS_SELECTOR,我們也需要切換到這個iframe。
因此,依次解釋為:
- 你必須
點擊cookies按鈕。下載按鈕是在一個iframe中,我們需要先切換到iframe,然后我們可以與download按鈕互動。download button是span tag的一部分,而不是button tag。- 使用
。Explicit waits.- 首選
id,css而不是xpath。(如果它們的性質是唯一的) 。
- 在全屏模式下啟動瀏覽器 。
代碼 :
driver = webdriver.Chrome(driver_path)
driver.maximum_window()
#driver.implicitly_wait(30)/span>
wait = WebDriverWait(driver, 50)
driver.get("https://ember-climate.org/data/carbon-price-viewer/")
wait.until(EC.element_to_be_clickable((By.ID, "cn-accept-cookie") ).click()
wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe[name='ETS']") )
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[包含(text(),'DOWNLOAD')]")).click()
匯入 :
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/qita/333265.html
標籤:
下一篇:python多重賦值,可能有例外
