扩展selenium webdriver类以包含请求库中的请求函数,同时处理所有需要的cookie和请求头。

selenium-requests的Python项目详细描述


扩展Selenium WebDriver类以包括 request 来自Requests库的函数, 同时处理所有需要的cookie和请求头。

在发出实际请求之前,启动一个本地http服务器 为webdriver实例发出的单个请求提供服务,以获取 此webdriver发送的“标准”http请求头;这些是缓存的 (在其生命周期中只发生一次)并在以后结合使用 使用请求库使请求看起来与 这是网络驱动程序发送的。饼干由 webdriver实例被添加到请求头中,并返回那些 在为webdriver实例自动设置的响应中。

功能

  • 发送所选Webdriver的“默认”HTTP头
  • 双向管理cookies:requests<;->;selenium
  • 切换到已经存在的窗口句柄,或创建临时 提出请求时使用cookies的新功能
  • 所有操作都保留原始状态(活动窗口句柄和 窗口句柄)的
  • 经测试可与Mozilla Firefox、Google Chrome和Phantomjs一起使用

用法

# Import any WebDriver class that you would usually import from# selenium.webdriver from the seleniumrequests modulefromseleniumrequestsimportFirefox# Simple usage with built-in WebDrivers:webdriver=Firefox()response=webdriver.request('GET','https://www.google.com/')print(response)# More complex usage, using a WebDriver from another Selenium-related module:fromseleniumrequests.requestimportRequestMixinfromsomeothermoduleimportCustomWebDriverclassMyCustomWebDriver(CustomWebDriver,RequestMixin):passcustom_webdriver=MyCustomWebDriver()response=custom_webdriver.request('GET','https://www.google.com/')print(response)

安装

pip install selenium-requests

详细信息

请求方法支持两个附加参数:

  • find_window_handle_timeout(默认值:-1秒)
  • page_load_timeout(默认值:-1秒)

如果超时为负,则允许脚本运行 无限期(类似于selenium webdriver的默认行为)。

第一个是必需的,因为没有可靠的方法来创建一个新的 带有selenium webdriver接口的窗口句柄,因此一个新的句柄 通过javascript生成,随后发现能够获取或 使用webdriver设置cookies。有两种方法可以做到这一点: 首先是简单地比较 在javascript被执行并找到差异之后。如果 差异不可靠(找到0个或1个以上的窗口句柄) 使用了另一种不太可靠的方法:每个 帧与请求的url的顶级域进行比较 (使用此方法时不支持javascript重定向)。如果没有 找到结果后,将对请求的 要检查潜在重定向的域。是否有重定向 否则,将搜索旧的或新的顶级域 find_window_handle_timeout秒,直到找到它或 TimeoutException已筹集。

第二个之所以需要,主要是因为 PhantomJS。每隔一个webdriver块 直到加载当前窗口句柄,phantomjs除外。如果新的 通过第一种方法(见上文)找到窗口句柄,然后 应该设置cookies,可能会引发异常, 因为webdriver必须用 在设置cookies之前,请先更正域。因此方法等待 page_load_timeout秒后引发TimeoutException

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Grails中集成javaapplet   动态设置片段时发生java错误   JavaSpringVelocity模板电子邮件?   SpringHateOAS中java自定义json输出   java wait()和notify()相关问题   正则表达式中的单词边界是什么?   使用外部库将项目部署到glassfish后发生java NoClassDefFoundError   java为什么在这里初始化ListNode两次?   java libGDX移动三维模型   java使线程等待另一个线程的执行   正则表达式如何在java中使用正则表达式解析给定字符串   java SWT ScrolledComposite在32768像素后切断画布生成的图像