Can';t在python中使用selenium打开IE
我在Windows10机器、InternetExplorer11、Python3.6、Selenium3.4.3和IEDriverServer 3.5上运行。我正在尝试使用以下代码打开IECan';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
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}