错误:configuration_policy_handler_list.cc(90)]未知政策:ChromeDriver和Chrome使用Selenium的DnsPrefetchingEnabled已启用

时间:2019-05-02 09:42:00

标签: selenium google-chrome webdriver selenium-chromedriver bdd

最近,每次我运行任何BDD测试时,我似乎都会在命令行中收到以下错误-

在chrome驱动程序上运行:73 / 74.0.3729.6和chrome 73

  

[17996:17852:0502 / 103000.545:ERROR:configuration_policy_handler_list.cc(90)]未知策略:DnsPrefetchingEnabled   [17996:17852:0502 / 103000.741:ERROR:configuration_policy_handler_list.cc(90)]未知策略:DnsPrefetchingEnabled

此后,命令行保持打开状态,chrome打开几秒钟,然后关闭并打开新的命令行,大约执行5次以上。

我尝试了以下线程-

Failed to read HKLM\SOFTWARE\Policies\Google\Chrome\MachineLevelUserCloudPolicyEnrollmentToken: The system cannot find the file specified. (0x2)

但是这似乎会带来更多问题。我已经尝试将chrome驱动程序更新为73和74,但这并不能解决问题。

2 个答案:

答案 0 :(得分:0)

此错误消息...

[17996:17852:0502/103000.741:ERROR:configuration_policy_handler_list.cc(90)] Unknown policy: DnsPrefetchingEnabled

...表示 ChromeDriver 无法与 WebBrowser Chrome浏览器通信。

一些有关您的测试环境和您正在使用的 Binary 版本的信息,将有助于我们更好地调试问题。但是,一种简单的解决方案似乎是通过switch的一个实例来使用ChromeOptions --dns-prefetch-disable,如下所示:

  • 详细信息:

    --dns-prefetch-disable
    
    Disables prefetching of DNS information.
    
    This switch was listed in chrome/common/chrome_switches.cc
    Removed on 2014-11-14
    
  • 示例代码:

    'chromeOptions': { 
      'args': ['--DNS-prefetch-disable']
    }
    

DNS预取

DNS解析时间会导致大量的用户感知延迟。 DNS解析所需的时间高度可变。延迟时间从大约1ms(本地缓存的结果)到通常报告的几秒钟时间不等。

DNS Prefetching是在用户尝试访问链接之前尝试解析域名的尝试。这是使用计算机的常规DNS解析机制完成的;未使用与Google的连接。域名解析后,如果用户确实导航到该域,则不会因DNS解析时间而产生有效的延迟。 DNS预取可以提供帮助的最明显示例是,当用户正在查看具有许多指向各个域的链接的页面时,例如搜索结果页面。当我们在页面中遇到超链接时,我们从每个域名中提取域名并将每个域名解析为一个IP地址。所有这些工作都是在用户阅读页面的同时进行的,使用最少的CPU和网络资源。当用户单击这些预先解析的名称中的任何一个时,他们平均将在导航中节省大约200毫秒(假设用户最近尚未访问该域)。比平均节省更为重要的是,用户不会倾向于经历DNS解析的“最坏情况”延迟,该延迟通常超过1秒。


BuiltInDnsClientEnabled

  • BuiltInDnsClientEnabled:使用内置的DNS客户端。

    Data type:
        Boolean [Windows:REG_DWORD]
    
    Windows registry location for Windows clients:
        Software\Policies\Google\Chrome\BuiltInDnsClientEnabled
    
    Mac/Linux preference name:
        BuiltInDnsClientEnabled
    
    Supported on:
        Google Chrome (Linux, Mac, Windows) since version 25
    
    Supported features:
        Dynamic Policy Refresh: Yes, Per Profile: No
    
    Description:
        Controls whether the built-in DNS client is used in Google Chrome.
    
        If this policy is set to true, the built-in DNS client will be used, if available.
    
        If this policy is set to false, the built-in DNS client will never be used.
    
        If this policy is left not set, the built-in DNS client will be enabled by default on MacOS, Android (when neither Private DNS nor VPN are enabled) and ChromeOS, and the users will be able to change whether the built-in DNS client is used by editing chrome://flags or specifying a command-line flag.
    
    Example value:
        0x00000001 (Windows), true (Linux), <true /> (Mac)
    

tl;博士

  • Chromium和Google Chrome都支持相同的策略集。请注意,此答案可能包括未发布的政策,这些政策可能会随时更改或删除,恕不另行通知,并且不提供任何形式的保证,包括不保证其安全性和隐私权。
  • 这些政策严格旨在用于在您的组织内部配置Google Chrome实例。在组织外部(例如,在公共分发的程序中)使用这些策略被视为恶意软件,并且Google和防病毒供应商可能会将其标记为恶意软件。
  • 这些设置不需要手动配置!可从https://www.chromium.org/administrators/policy-templates下载适用于Windows,Mac和Linux的易于使用的模板。
  • 最后更新于2019-04-24基于Chrome 76.0.3776。

答案 1 :(得分:0)

我重新下载了匹配的ChromeDriver后,我的工作了。显然,我使用的驱动程序在更新后不再支持我的浏览器。

ChromeDriver具有不同的版本,并且应与您当前的Chrome浏览器版本匹配。

即。 我当前的浏览器是77版 所以我必须下载77版的ChromeDriver