无法在python中使用selenium打开IE

2024-09-27 22:10:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行的是windows10、internetexplorer11、python3.6、selenium3.4.3和iedriverserver3.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)

输出:

^{pr2}$

任何帮助都将不胜感激谢谢。在

更新: 我把这个加到我以前的代码里

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

更新: 我也尝试过设置功能,但仍然收到相同的错误:“未知功能名为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/")

Tags: 代码importoslibdriverseleniumgooglecaps
1条回答
网友
1楼 · 发布于 2024-09-27 22:10:07

我有好几天都有同样的问题。 我的解决方法是从capabilities字典中删除platform和{}键

示例:

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_SESSION, parameters)

当你点击它,你会看到:

^{pr2}$

正如您所看到的,here}uw3c\u功能名称与我们传递的值不同。 我们将“WINDOWS”传递为“platformName”,而_W3C_CAPABILITY_NAMES有“platformName”,只接受小写字母。“版本”键也一样。在

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

这个解决方案并不是完美的,我能够在不删除一些功能的情况下在selenium java中启动IE。在

编辑:另一个解决方案可以在Grimlek注释中找到here,它实际上是说您应该从start_session(self, capabilities, browser_profile=None)(从远程)删除{}\网络驱动程序.py). 代码如下:

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

这样就不需要从功能中删除密钥。在

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

相关问题 更多 >

    热门问题