当前位置: 首页 > 知识库问答 >
问题:

javascript错误:使用Selenium和Python检索Navigator.Plugins时出现循环引用错误

周作人
2023-03-14

我试图从Selenium驱动ChromeDriver启动的google-chrome浏览上下文中检索navigator.plugins的值。

使用google-chrome-devtools,我可以检索navigator.useragentnavigator.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)
    

    我已经通过了以下关于循环引用的讨论,我理解了这个概念。但我不知道我应该如何在这里解决这个问题。

      null
  • 共有1个答案

    司马庆
    2023-03-14

    如果您需要一个插件列表,可以尝试只返回一个序列化的、以换行分隔的字符串,然后在Python域中用换行符号拆分它。

    例如:

    plugins = driver.execute_script("return Array.from(navigator.plugins).map(({name}) => name).join('\n');").split('\n')
    
     类似资料:
    • 我有一个基于Euler项目问题3的代码:“13195的素数因子是5、7、13和29。600851475143中最大的素数因子是什么?” 我在下面有一个我认为可行的代码,但第9行()不断返回错误:“索引器:列表索引超出范围”。当我在for循环中移动时,似乎并没有修改列表,所以我不确定出了什么问题。 有人知道我哪里错了吗? 非常感谢。

    • ServletException:循环视图路径[home]:将再次分派回当前处理程序URL[/home]。检查您的视图解析器设置!(提示:这可能是由于默认视图名称生成而导致的未指定视图的结果。)在org.springframework.web.servlet.view.internalResourceView.prepareforrendering(internalResourceView.jav

    • 我尝试执行下面的python代码 最后一个语句通过以下连接错误。

    • 例:“at”和“tack”应该返回true,“tree”和“ere”应该返回false。 在查看注释后编辑,我的新代码现在是这样的。它总是返回false,即使带有“tree”和“tree”。

    • 问题内容: 我尝试序列化从实体数据模型.edmx自动生成的POCO类,使用时 我收到以下错误: 错误检测到类型为System.data.entity的自引用循环。 我该如何解决这个问题? 问题答案: 那是最好的解决方案 https://code.msdn.microsoft.com/Loop-Reference-handling-in- caaffaf7 (我选择/尝试了这个,还有很多其他选择)