使用 selenium 获取 Chrome Devtools 内容的 Python 脚本

Posted

技术标签:

【中文标题】使用 selenium 获取 Chrome Devtools 内容的 Python 脚本【英文标题】:Python script using selenium to obtain Chrome Devtools content 【发布时间】:2018-09-03 18:27:50 【问题描述】:

我在尝试使用 python 脚本在 Chrome Devtools 中获取“网络”选项卡的内容时遇到了一些困难。 该脚本应使用 Selenium 库来执行此操作。 我想知道这是否可能,如果可以,你会怎么做? 我已经阅读了一些建议的解决方案,但没有一个对我有用。

chrome_path = r"C:\Python27\chromedriver_win32/chromedriver.exe"
chrome_options = Options()  
chrome_options.add_argument("--headless")  
chrome_options.add_argument("window-size=1200,1100")


driver = webdriver.Chrome(executable_path=chrome_path,chrome_options=chrome_options)
driver.get("https://www.container.io/login")


elementUser = driver.find_element_by_id('username')
elementPassword = driver.find_element_by_id('password')
elementUser.send_keys(user)
elementPassword.send_keys(password)

我想在“网络”选项卡上捕获的是:

Query String Parameters
   access_token: XXXXXXXXX
   evnId: XxxXXx
   sortBy: xxXXxx

【问题讨论】:

您到底想捕捉什么?是否要捕获网络流量? 我想在登录网站后获取访问令牌。它出现在“网络”选项卡上,其中一种 GET 方法 无法使用 selenium 选择网络流量,因为 Devtools 窗口不存在选择器。它是否保存为cookie?听起来它是通过服务器的响应发送的(对于 GET 请求),所以为了让您将它用于另一个 GET 的身份验证,它必须被存储。您可以使用 driver.get_cookies() 访问 cookie。但是,如果没有,那么恐怕您可以尝试的最后一件事就是查看服务器的响应并将其拆开。但是在 Selenium 中无法解析响应,因为核心团队的 @JimEvans 在这里回复 ***.com/a/6512785/2453382 Cookie 可能是个好主意,我现在就检查一下。 【参考方案1】:

https://***.com/a/68363046/8491363

我实际上偶然发现了一个类似的问题,并发布了一个同样类似问题的答案。

您必须为此使用driver.get_log('performance')

查看上面的答案链接了解详情。

【讨论】:

以上是关于使用 selenium 获取 Chrome Devtools 内容的 Python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

使用 Selenium Python API 绑定从 Chrome 获取 console.log 输出

使用 selenium 获取 Chrome Devtools 内容的 Python 脚本

切换选项卡时,带有无头 chrome 的 Selenium 无法获取 url

python Chrome + selenium自动化测试与python爬虫获取网页数据

长时间 Selenium 执行后 Chrome 关闭

Selenium4 IDE初体验