【发布时间】:2020-10-25 06:14:11
【问题描述】:
我正在尝试从Selenium 驱动的ChromeDriver 发起的google-chrome 中检索navigator.plugins 的值浏览上下文。
使用google-chrome-devtools 我可以检索navigator.userAgent 和navigator.plugins,如下所示:
但使用 Selenium 的 execute_script() 方法我能够提取 navigator.userAgent 但 navigator.plugins 会引发以下 循环引用 错误:
-
代码块:
from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument("start-maximized") driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe') driver.get("https://www.google.com/") print("userAgent: "+driver.execute_script("return navigator.userAgent;")) print("plugins: "+driver.execute_script("return navigator.plugins;")) -
控制台输出:
userAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Traceback (most recent call last): File "C:\Users\Soma Bhattacharjee\Desktop\Debanjan\PyPrograms\navigator_properties.py", line 19, in <module> print("vendor: "+driver.execute_script("return navigator.plugins;")) File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 636, in execute_script 'args': converted_args})['value'] File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response) File "C:\Python\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.JavascriptException: Message: javascript error: circular reference (Session info: chrome=83.0.4103.116)
我已经就循环参考进行了以下讨论,我理解了这个概念。但我不确定我应该如何解决这里的问题。
- Example of a circular reference in Javascript?
- Detecting and fixing circular references in JavaScript
- Is circular reference between objects a bad practice?
有人可以帮我找回navigator.plugins吗?
【问题讨论】:
标签: google-chrome google-chrome-devtools javascript selenium selenium-webdriver navigator circular-reference