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

问题描述

在Windows 10(64位,python3.6.8)上,如果未指定gethttp://协议就填充了链接,则无法通过驱动程序的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:,网址。

经过一番调查,我发现如果我将driver.get('google.com')更改为driver.get('http://google.com'),则问题是不可复制的。

解决方法

主要要考虑的是,您的程序不应停留在网址栏中的 data:, 。如果发生这种情况,最简单的解决方案是对以下几点进行交叉检查:

  • 在调用通过{em> URL 的get()方法时,您需要传递Fully Qualified Domain Name (FQDN)。您需要确保url的格式正确。例如,协议(即http)随实际URL附加如下:

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

    使用的二进制兼容版本
,

我同意@DebanjanB的建议。

使用driver.get(“ URL”)方法时,您需要强制通过URL传递协议。

如果您未通过协议,则会收到错误消息。

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

我建议您参考此document并尝试完整阅读。它适用于Firefox并使用JAVA语言,但所有浏览器和所有编程语言的逻辑均相同。我希望它能帮助您清除混乱。

,

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