Selenium-python-heliumWeb 自动化 Python 库
Selenium-python 非常适合 Web 自动化,而 Helium 库能让它的使用变得更轻松:
Helium 将每个调用转发给 Selenium,不同之处在于 Helium 的 API 更高级。在 Selenium 中,您需要使用 HTML ID、XPath 和 CSS 选择器来识别网页元素。但 Helium 可以通过用户可见的标签来引用元素。因此,Helium 脚本通常比类似的 Selenium 脚本短 30-50%,而且 Helium 更易于阅读,并且在底层网页的变化方面更稳定。
因为 Helium 只是 Selenium 的包装器,所以你可以自由地混合这两个库。例如:
# A Helium function:
driver = start_chrome()
# A Selenium API:
driver.execute_script("alert('Hi!');")
除了更高级的 API 之外,Helium 还进一步简化了传统的 Selenium 中令人痛苦的任务:
- Web 驱动程序管理: Helium 自带 ChromeDriver 和 geckodriver 的副本,因此你无需下载并将它们放在 PATH 中。
- iFrame:与 Selenium 不同,Helium 允许与嵌套 iFrame 内的元素进行交互,而无需先“切换到”iFrame。
- 窗口管理。Helium 会通知弹出窗口何时打开或关闭,还可以通过(部分)标题轻松切换到窗口,不需要遍历 Selenium 窗口句柄。
- 隐式等待。默认情况下,如果您尝试使用 Selenium 单击某个元素并且该元素尚未出现在页面上,则您的脚本将失败。默认情况下,Helium 最多等待 10 秒才能显示元素。
- 显式等待。Helium 为您提供了一个更好的 API,用于等待网页上的条件变为真。例如:在 Selenium 中
等待元素出现,要这样编写:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
在 Helium 中可以这样写
wait_until(Button('Download').exists)
评论