python-3.x - 我们如何在 python 中使用没有硒的 ChromeDriver、IEDriver、GeckoDriver?
问题描述
我正在寻找一种将网络驱动程序(ChromeDriver、IEDriver、GeckoDriver 等)与我的原生 python 应用程序一起使用的方法,这样,该应用程序将找出浏览器,并相应地选择驱动程序,并执行一些操作(比如点击一个元素或获取数据)。我想在不使用 selenium 的情况下在 python 中完成任务
解决方案
理论上可以在没有 Selenium 的情况下使用驱动程序可执行文件。所有 WebDriver 实现都使用相同的机制进行操作。该机制启动本地运行的 HTTP 服务器,并在一组众所周知的端点 (URL) 上侦听包含明确定义的 JSON 主体的 HTTP 请求。
甚至可以使用 cURL 之类的工具启动 WebDriver 实现IEDriverServer.exe
,geckodriver
或者chromedriver
使浏览器自动化,因此使用 Python HTTP 客户端库和 JSON 解析器当然是可能的。但是,这样做需要对与驱动程序通信时使用的协议有相当透彻的理解,而获得这种理解显然并非易事。事实上,使用该协议而不需要知道它的细节是 Selenium 存在的原因之一。
虽然你说你想做的是可能的,但我绝不会称之为推荐。尝试走这条路似乎需要付出很大的努力才能获得非常小的收益,当您考虑需要担心生成的可执行进程的生命周期、HTTP 请求主体的正确格式以及处理来自的所有潜在响应时远端。您将重新发明 Selenium 已经为您做的很多事情。您的问题没有显示您为什么不想使用 Selenium 的任何迹象,因此很难就您认为反对的事情的替代方案或缓解措施提供任何进一步的指导。
推荐阅读
- java - 需要检查gps是否启用
- xamarin - 当我选择否时,显示警报消息显示两次,为什么?当我选择否时,如何只显示一次警报?
- android - 内部有一个子模块的 Android Studio 导入模块 (AAR)
- kubernetes - Kubeconfig 用于部署到 k8s 集群中的所有命名空间
- linear-algebra - 在 Eigen3 中实现 Bartels-Stewart 算法?
- python - Not able to click the radio button using selenium webdriver in python
- python - 在 jupyter notebook 中编辑代码缩进的快捷方式
- java - 我想从 Android Studio 访问 .so lib 及其 cpp 文件的方法
- jquery - 触发jquery在大屏幕上不起作用
- sass - 带有变量的 sass 列表媒体查询