4

我似乎无法通过 Selenium 2 的 Python 库打开 Google Chrome 或 Internet Explorer。我正在使用 Windows 7、64 位。

我已完成以下步骤:

  • 安装 python - 2.7.5
  • 安装硒 2.33
  • 在环境变量中包含 C:\Python27 & C:\Python27\Scripts - 路径
  • 下载了支持v27-30(我是28)的32位(我正在运行64位但找不到32位版本)windows Chrome驱动并放入C:\Python27\Scripts
  • 下载了最高支持 IE9 的 64 位 IE 驱动程序(我将 IE10 降级为 IE9)。我将驱动程序放入 C:\Python27\Scripts

每当我输入:

from selenium import webdriver
driver = webdriver.Ie()

或者

from selenium import webdriver
driver = webdriver.Chrome()

进入 Python shell,没有浏览器弹出,shell 只是冻结了几分钟,然后输出一条错误消息。

IE 错误信息:

selenium.common.exceptions.WebDriverException: Message: 'Can not connect to the IEDriver'

铬错误消息:

urllib2.HTTPError: HTTP Error 503: Service Unavailable

它与Firefox完美配合。有趣的是,进程(IEDriver 和 ChromeDriver)根据 TaskManager 启动,但窗口从未出现。

4

2 回答 2

7

在 python-seleniumwebdriver.Ie中,它只是执行IEDriver.exe并通过webdriver.Remote. 例如,您可以从命令行启动IEDriver.exe :

> IEDriverServer.exe
Started InternetExplorerDriver server (64-bit)
2.39.0.0
Listening on port 5555

并替换webdriver.Ie()为以下代码:

webdriver.Remote(command_executor='http://127.0.0.1:5555',
                 desired_capabilities=DesiredCapabilities.INTERNETEXPLORER)`

你会得到同样的结果。

特别是在您的情况下,您很可能有一些系统代理设置强制它通过代理服务器连接到127.0.0.1 。可能当您按照答案Python: Disable http_proxy in urllib2中所述禁用它时,您可以解决问题:

import selenium
import urllib2
from contextlib import contextmanager

@contextmanager
def no_proxies():
    orig_getproxies = urllib2.getproxies
    urllib2.getproxies = lambda: {}
    yield
    urllib2.getproxies = orig_getproxies

with no_proxies():
    driver = selenium.webdriver.Ie()
    driver.get("http://google.com")
于 2014-07-16T07:26:53.003 回答
1

我无法用我下载到的路径来解决这个问题,但是可以通过定义驱动程序的路径来解决这个问题,如下所示:

   driver = webdriver.Chrome('C:\path\to\chromedriver')

或者

   driver = webdriver.Ie('C:\path\to\iedriver')
于 2013-07-16T18:33:56.683 回答