在未指定协议的情况下打开网页时出现 Selenium InvalidArgumentException (http/https)

Selenium InvalidArgumentException on opening webpage without protocol specified (http/https)

在 Windows 10(64 位,python3.6.8)上,我无法通过驱动程序的 get 方法打开 link,以防 link未指定 http://https:// 协议。

我使用 selenium==3.141msedge-selenium-tools-3.141.2 以及 python。 Microsoft Edge 版本 85.0.564.51(与驱动程序版本相同)。

以下代码引发错误:

from msedge.selenium_tools import Edge, EdgeOptions

options = EdgeOptions()
options.set_capability('platform', 'Windows')
options.use_chromium = True


path = r'<correct path to driver>'

driver = Edge(executable_path=path,
                    service_args=None,
                    options=options,
                    desired_capabilities={})
driver.get('google.com')

错误:selenium.common.exceptions.InvalidArgumentException: Message: invalid argument (Session info: MicrosoftEdge=85.0.564.51)

浏览器状态出错 - 浏览器已启动并指向 data:, url。

经过一些调查,我发现如果我将 driver.get('google.com') 更改为 driver.get('http://google.com'),问题将无法重现。

主要担心的是,您的程序不应卡在 url 栏中的 data:,。如果发生这种情况,最简单的解决方案是交叉检查以下几点:

  • 调用 get() 方法传递 URL 时,您需要传递 Fully Qualified Domain Name (FQDN)。您需要确保 url 的格式正确。例如,协议 http 与实际的 url 一起附加如下:

    https://www.google.com/
    
  • 此外,您还需要确保使用 Google Chrome 浏览器

同意@DebanjanB 的建议

当使用 driver.get("URL") 方法时,您需要强制传递带有 URL 的协议。

如果你没有通过协议那么你会得到一个错误。

根据您使用的编程语言,错误可能会略有不同。

我建议您参考此 document 并尝试完整阅读它。它适用于 Firefox 并使用 JAVA 语言,但逻辑对于所有浏览器和所有编程语言都是相同的。希望能帮到你解惑。

在我尝试 运行 另一台机器上的相同代码后,它运行良好,没有任何错误。对我来说,我在第一台机器上使用的设置或 Parallels VM 似乎有些问题