簡體   English   中英

如何點擊帶有圖片的onclick鏈接? Python Selenium

[英]How to click on onclick link with image? Python Selenium

我只是在學習如何在Python中使用Selenium動態進行網絡抓取。 我目前正在嘗試點擊網頁上的鏈接,以在搜索結果上進行分頁。

到目前為止,這是我正在使用的代碼:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome('C:\\Users\\km13\\chromedriver.exe')
driver.get("http://www.congreso.gob.pe/pley-2016-2021")
elem = driver.find_element_by_css_selector("img[src='/Sicr/TraDocEstProc/CLProLey2016.nsf/8eac1ef603908b5105256cdf006c41b1/$Body/0.AB2?OpenElement&FieldElemFormat=gif']")
elem.click()

這是與我要單擊的元素相對應的HTML:

 `<a href="" onclick="return _doClick('05257FB7005EB655.8eac1ef603908b5105256cdf006c41b1/$Body/0.A50', this, null)"><img src="/Sicr/TraDocEstProc/CLProLey2016.nsf/8eac1ef603908b5105256cdf006c41b1/$Body/0.AB2?OpenElement&amp;FieldElemFormat=gif" width="81" height="16" border="0"></a>`

從我對HTML的有限了解來看,似乎該鏈接實際上嵌入在gif中,這就是為什么我嘗試使用與該圖像一起顯示的CSS選擇器的原因。 但這沒有用。

任何指導將不勝感激!

更新:我通過添加以下導入更改了代碼

from selenium.webdriver.common.by import By

我更改了以下內容:

elem = driver.find_element(By.CSS_SELECTOR, "img[src='/Sicr/TraDocEstProc/CLProLey2016.nsf/8eac1ef603908b5105256cdf006c41b1/$Body/0.AB2?OpenElement&amp;FieldElemFormat=gif']")
elem.click()

現在,我收到“沒有這樣的元素”的錯誤消息。

有一個iframe。您需要先切換到iframe才能訪問元素。請嘗試以下代碼。使用WebDriverWait處理動態元素。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome('C:\\Users\\km13\\chromedriver.exe')
driver.get("http://www.congreso.gob.pe/pley-2016-2021")

WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.NAME, 'ventana02')))
elem = WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
    (By.XPATH, "//a[contains(@onclick,'A50')]/img[contains(@src,'Sicr/TraDocEstProc/CLProLey')]")))
elem.click()

已編輯

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome('C:\\Users\\km13\\chromedriver.exe')
driver.get("http://www.congreso.gob.pe/pley-2016-2021")
driver.switch_to.frame(0)
elem=WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[contains(@onclick,'A50')]/img[contains(@src,'Sicr/TraDocEstProc/CLProLey')]")))
elem.click()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM