【问题标题】:Can't open IE using selenium in python无法在 python 中使用 selenium 打开 IE
【发布时间】:2017-08-22 21:11:39
【问题描述】:

我在 Windows 10 机器、Internet Explorer 11、python 3.6、selenium 3.4.3 和 IEDriverServer 3.5 上运行。我正在尝试使用以下代码打开 IE。

from selenium import webdriver
import os


driverLocation = "C:\\Users\\JD\\PycharmProjects\\Lib\\IEDriverServer.exe"
os.environ["webdriver.ie.driver"] = driverLocation
driver = webdriver.Ie(driverLocation)
google = "https://google.com"
driver.get(google)

输出:

Traceback (most recent call last):
  File "C:/Users/J/PycharmProjects/Automation/IE_Test.py", line 7, in <module>
    driver = webdriver.Ie(driverLocation)
  File "C:\Users\JD\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\ie\webdriver.py", line 57, in __init__
    desired_capabilities=capabilities)
  File "C:\Users\JD\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 98, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "C:\Users\JD\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 188, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "C:\Users\JD\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 256, in execute
    self.error_handler.check_response(response)
  File "C:\Users\JD\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Invalid capabilities in alwaysMatch: unknown capability named platform

任何帮助将不胜感激。

更新: 我将此添加到我以前的代码中,

capabilities = DesiredCapabilities.INTERNETEXPLORER
print(capabilities["platform"])
print(capabilities["browserName"])

输出:

WINDOWS
internet explorer
 File "C:\Users\JD\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Invalid capabilities in alwaysMatch: unknown capability named platform

更新: 我也尝试过设置功能,但仍然收到相同的错误:“名为平台的未知功能

caps = DesiredCapabilities.INTERNETEXPLORER.copy()
caps["platform"] = "WINDOWS"
caps["browserName"] = "internet explorer"
caps["requireWindowFocus"] = True
browser = webdriver.Ie(capabilities=caps,
                       executable_path="C:\\Users\\JD\\PycharmProjects\\Lib\\IEDriverServer.exe")
browser.get("https://www.facebook.com/")

【问题讨论】:

    标签: python internet-explorer selenium-webdriver


    【解决方案1】:

    这几天我遇到了同样的问题。 我的解决方法是从 capabilities 字典中删除 platform 和 version 键

    例子:

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    #create capabilities
    capabilities = DesiredCapabilities.INTERNETEXPLORER
    
    #delete platform and version keys
    capabilities.pop("platform", None)
    capabilities.pop("version", None)
    
    #start an instance of IE
    driver = webdriver.Ie(executable_path="C:\\your\\path\\to\\IEDriverServer.exe", capabilities=capabilities)
    
    driver.get("https://www.google.com/")
    

    到目前为止,我的猜测是发生此错误是因为 w3c_caps 作为唯一正确的功能传递。您可以在 Traceback 中看到:

    response = self.execute(Command.NEW_SESSION, parameters)

    当你点击它时,你会看到:

    w3c_caps["alwaysMatch"].update(capabilities) 
    

    如您所见,here_W3C_CAPABILITY_NAMES 的值与我们传递的值不同。 我们将“WINDOWS”作为“平台”传递,而 _W3C_CAPABILITY_NAMES 具有“平台名称”并且只接受小型大写字母。 “版本”键也是如此。

    所以我们添加了无法识别的功能。

    这种解决方法绝不是完美的,我能够在 selenium java 中启动 IE,而不会删除一些功能。

    编辑:另一个解决方案可以在 Grimlek 评论中找到 here,它实质上是说您应该从 start_session(self, capabilities, browser_profile=None)(从 remote\webdriver.py)中删除 "capabilities": w3c_caps。代码如下所示:

    w3c_caps["alwaysMatch"].update(capabilities)
    parameters = {"capabilities": w3c_caps,
                          "desiredCapabilities": capabilities}
    

    那么您就不需要从功能中删除键。

    另一个编辑:我刚刚将我的 selenium-python 从 3.4.3 更新到 3.5.0,不再需要弄乱功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-27
      • 2017-05-24
      • 2018-08-25
      • 2013-11-07
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多