Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果我必须直接点击横幅并在另一个选项卡上打开它,如何使用selenium获得重定向链?_Python_Selenium_Selenium Webdriver_Redirect_Har - Fatal编程技术网

Python 如果我必须直接点击横幅并在另一个选项卡上打开它,如何使用selenium获得重定向链?

Python 如果我必须直接点击横幅并在另一个选项卡上打开它,如何使用selenium获得重定向链?,python,selenium,selenium-webdriver,redirect,har,Python,Selenium,Selenium Webdriver,Redirect,Har,我正在做一个项目,在这个项目中,我应该点击横幅并获得重定向链 为了不让我的页面覆盖并使下一步更容易,我想我应该在横幅上按住ctrl键并单击,然后在另一个浏览器选项卡中打开它,以获得所有真正的重定向链 我做了很多研究,但只发现目前的方法会转储HAR文件以获得重定向链。但要获取HAR文件,应在以前的选项卡中打开开发人员工具窗口中的网络面板。但是,在我的例子中,在加载选项卡之前,新选项卡无法打开网络面板;我无法打开网络面板并重新加载页面,因为重定向链不是真实的。此外,嵌入式性能日志在我的案例中不适用

我正在做一个项目,在这个项目中,我应该点击横幅并获得重定向链

为了不让我的页面覆盖并使下一步更容易,我想我应该在横幅上按住ctrl键并单击,然后在另一个浏览器选项卡中打开它,以获得所有真正的重定向链

我做了很多研究,但只发现目前的方法会转储HAR文件以获得重定向链。但要获取HAR文件,应在以前的选项卡中打开开发人员工具窗口中的网络面板。但是,在我的例子中,在加载选项卡之前,新选项卡无法打开网络面板;我无法打开网络面板并重新加载页面,因为重定向链不是真实的。此外,嵌入式性能日志在我的案例中不适用


有人能告诉我如何解决这些问题吗?还是我错了上面的任何部分?如果您有任何建议,我将不胜感激,因为我已经为此工作了很长时间。

为了获得重定向链,您需要HAR文件

有几个包将selenium与其他库结合起来实现这一点(以及其他附加功能)

一个是

BrowserMob代理允许您操作HTTP请求和响应,捕获HTTP内容,并将性能数据导出为HAR文件。BMP作为一个独立的代理服务器工作得很好,但当嵌入到Selenium测试中时,它特别有用

以下是一个例子:

from browsermobproxy import Server
server = Server("path/to/browsermob-proxy")
server.start()
proxy = server.create_proxy()

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--proxy-server={0}".format(proxy.proxy)) #Configure chrome options
driver = webdriver.Chrome(chrome_options=chrome_options)
proxy.new_har("StackOverFlow") 
driver.get("https://stackoverflow.com")
print(proxy.har)
还有其他库,例如,具有类似功能的库(也具有其他功能)

注意:无需打开网络面板


确保创建并添加服务器启动的路径。

这听起来好像可以通过selenium wire或现在使用selenium wire解决。Browsermob可以下载HAR文件,我不知道我是否应该先打开网络面板来完成这项工作。selenium-wire似乎还可以,现在正在加快速度。此外,如何筛选出真正的直接路径仍然是一个问题。顺便说一下,在selenium wire中,您可以启动一个未被检测到的chrome,它可以通过机器人检测。关于Browsermob,我认为您不需要打开网络面板。。。关于硒线,我认为这是一个伟大的包!其中一个优点是与undetected-chrome协作。但undetected-chrome似乎与
click
方法不兼容。请参阅中的重要注意事项