Selenium-python-heliumWeb 自動化 Python 庫
Selenium-python 非常適合 Web 自動化,而 Helium 庫能讓它的使用變得更輕松:
Helium 將每個調(diào)用轉(zhuǎn)發(fā)給 Selenium,不同之處在于 Helium 的 API 更高級。在 Selenium 中,您需要使用 HTML ID、XPath 和 CSS 選擇器來識別網(wǎng)頁元素。但 Helium 可以通過用戶可見的標(biāo)簽來引用元素。因此,Helium 腳本通常比類似的 Selenium 腳本短 30-50%,而且 Helium 更易于閱讀,并且在底層網(wǎng)頁的變化方面更穩(wěn)定。
因為 Helium 只是 Selenium 的包裝器,所以你可以自由地混合這兩個庫。例如:
# A Helium function:
driver = start_chrome()
# A Selenium API:
driver.execute_script("alert('Hi!');")
除了更高級的 API 之外,Helium 還進一步簡化了傳統(tǒng)的 Selenium 中令人痛苦的任務(wù):
- Web 驅(qū)動程序管理: Helium 自帶 ChromeDriver 和 geckodriver 的副本,因此你無需下載并將它們放在 PATH 中。
- iFrame:與 Selenium 不同,Helium 允許與嵌套 iFrame 內(nèi)的元素進行交互,而無需先“切換到”iFrame。
- 窗口管理。Helium 會通知彈出窗口何時打開或關(guān)閉,還可以通過(部分)標(biāo)題輕松切換到窗口,不需要遍歷 Selenium 窗口句柄。
- 隱式等待。默認情況下,如果您嘗試使用 Selenium 單擊某個元素并且該元素尚未出現(xiàn)在頁面上,則您的腳本將失敗。默認情況下,Helium 最多等待 10 秒才能顯示元素。
- 顯式等待。Helium 為您提供了一個更好的 API,用于等待網(wǎng)頁上的條件變?yōu)檎妗@纾涸?Selenium 中
等待元素出現(xiàn),要這樣編寫:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
在 Helium 中可以這樣寫
wait_until(Button('Download').exists)評論
圖片
表情
