Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t在python中使用selenium打开IE_Python_Internet Explorer_Selenium Webdriver - Fatal编程技术网

Can';t在python中使用selenium打开IE

Can';t在python中使用selenium打开IE,python,internet-explorer,selenium-webdriver,Python,Internet Explorer,Selenium Webdriver,我在Windows10机器、InternetExplorer11、Python3.6、Selenium3.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"] = d

我在Windows10机器、InternetExplorer11、Python3.6、Selenium3.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
输出:

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/")

我有同样的问题好几天了。 我的解决办法是从
功能
字典中删除
平台
版本

例如:

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作为唯一正确的功能传递。您可以在回溯中看到:

response=self.execute(Command.NEW_会话,参数)

当您单击它时,您将看到:

w3c_caps["alwaysMatch"].update(capabilities) 
正如您所看到的,W3C功能名称所包含的值与我们传递的值不同。 我们将“WINDOWS”作为“平台”传递,而_W3C_CAPABILITY_名称有“platformName”,并且只接受小写字母。同样的,对于“版本”键

因此,我们添加了未被识别的功能

这个解决方案绝不是完美的,我能够在SeleniumJava中启动IE,而不删除一些功能

编辑:在Grimlek comment中可以找到另一个解决方案,它本质上说您应该从
启动会话(self,capabilities,browser\u profile=None)
(从remote\webdriver.py)中删除
“功能”:w3c\u caps
。代码如下:

w3c_caps["alwaysMatch"].update(capabilities)
parameters = {"capabilities": w3c_caps,
                      "desiredCapabilities": capabilities}
这样就不需要从功能中删除密钥

另一个编辑:我刚刚将selenium python从3.4.3更新到了3.5.0,不再需要修改功能

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