我正在嘗試從網頁(https://www.educaion.gob.es/teseo/irGestionarConsulta.do)獲取資料。它在入口處有一個驗證碼,我手動解決并移至結果頁面。如果我使用瀏覽器的“回傳”按鈕到達初始頁面,那么從結果頁面回傳到入口頁面不會修改驗證碼;但是如果我使用Selenium 的 WebDriver 的指令,有時驗證碼會被修改——我最好避免這樣做。driver.back()
顯然:我想從 Selenium 訪問DOM 視窗(瀏覽器),而不是檔案(或 html 中的任何元素)并將 ALT ARROW_LEFT 鍵發送到瀏覽器(視窗)。
顯然,這不能通過以下方式完成:
from selenium.webdriver import Firefox
from selenium.webdriver.common.keys import Keys
driver = Firefox()
driver.get(url)
xpath = ???
driver.find_element_by_xpath(xpath).send_keys(Keys.ALT, Keys.ARROW_LEFT)
因為send_keys連接到焦點元素,我的目標是 DOM 視窗,而不是檔案的任何特定元素。
我也嘗試過ActionChains:
from selenium.webdriver.common.action_chains import ActionChains
action = ActionChains(driver)
action.key_down(Keys.LEFT_ALT).key_down(Keys.ARROW_LEFT).send_keys().key_up(Keys.LEFT_ALT).key_up(Keys.ARROW_LEFT)
action.perform()
這也不起作用(我嘗試了幾種組合)。檔案宣告key_down/up需要一個元素來發送鍵,如果 None (默認值)是當前的焦點元素。所以這里又是一個如何關注視窗(瀏覽器)的問題。
我曾考慮過使用滑鼠控制元件,但我認為它會是一樣的:我知道如何使滑鼠到達檔案中的任何元素,但我想到達視窗/瀏覽器。
我曾想過通過 來識別目標元素driver.current_window_handle,但也無濟于事。
這可以從 Selenium 完成嗎?如果是這樣,怎么做?其他圖書館可以做到嗎,也許是 pyppeteer 或 playwright?
uj5u.com熱心網友回復:
嘗試使用 JavaScriptExecutor -driver.execute_script("window.history.go(-1)")
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/510227.html
