首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >selenium.common.exceptions.WebDriverException:消息:“Can‘t connect to GhostDriver’”

selenium.common.exceptions.WebDriverException:消息:“Can‘t connect to GhostDriver’”
EN

Stack Overflow用户
提问于 2013-09-20 19:52:44
回答 3查看 16.7K关注 0票数 17

我正在尝试从Centos服务器上的selenium.webdriver中运行PhantomJS。PhantomJS在path中,并且从终端正常运行。然而,在脚本中,它似乎已启动,但之后无法到达指定的端口(我尝试了从我的提供商29842和60099打开的两个不同的端口,它们都不工作,也没有指定的端口启动它)。

错误发生在selenium.webdriver.common.utils

代码语言:javascript
复制
try:
    socket_ = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    socket_.settimeout(1)
    socket_.connect(("localhost", port))
    socket_.close()
    return True
except socket.error:
    return False

这是从我的脚本(我尝试没有任何参数,以及写入到可执行文件的完整路径,但都不起作用):

代码语言:javascript
复制
self.browser = webdriver.PhantomJS(
            port=29842,
            desired_capabilities={
                'javascriptEnabled': True,
                'platform': 'windows',
                'browserName': 'Mozilla',
                'version': '5.0',
                'phantomjs.page.settings.userAgent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36"
            }
        )

这是从selenium.webdriver.phantomjs.service初始化webdriver的脚本。我检查了一下,subprocess.Popen实际上启动了phantomjs,错误发生在while循环中:

代码语言:javascript
复制
    try:
        self.process = subprocess.Popen(self.service_args,
                                        stdout=self._log, stderr=self._log)

    except Exception as e:
        raise WebDriverException("Unable to start phantomjs with ghostdriver.", e)

    count = 0
    while not utils.is_connectable(self.port):
        print utils.is_connectable(self.port)
        count += 1
        time.sleep(1)
        if count == 30:
             raise WebDriverException("Can not connect to GhostDriver")

所有的包都是最新版本的: python 2.7,selenium 2和集成了ghostdriver的phantomjs 1.9二进制文件。我让相同的脚本在我的Ubuntu本地机器上正常工作,做与在服务器上做的完全相同的事情。在服务器上有什么不同?

EN

回答 3

Stack Overflow用户

发布于 2013-11-18 04:09:22

在升级到新版本后,我在Ubuntu上遇到了这个问题。我重新安装了所有的nodejs和python包,但我认为解决问题的方法是确保nodejs可执行文件象征性地链接到node

以下是我使用的命令:

代码语言:javascript
复制
apt-get remove node nodejs
apt-get install build-essential python-dev phantomjs npm nodejs
ln -s /usr/bin/nodejs /usr/bin/node
npm install -g phantomjs
pip install selenium bson BeautifulSoup pymongo
票数 9
EN

Stack Overflow用户

发布于 2014-04-26 18:14:51

在Linux Mint 14上安装nodejs-legacy包为我解决了这个问题。

代码语言:javascript
复制
sudo apt-get install nodejs-legacy
票数 4
EN

Stack Overflow用户

发布于 2015-08-05 02:01:10

我遇到了这个问题,并找出了导致它的原因。在另一篇关于开发Facebook应用程序的教程中,我被告知将nano设置为/etc/hosts,并将其更改为-

代码语言:javascript
复制
127.0.0.1    localhost

对这个-

代码语言:javascript
复制
127.0.0.1    test1.com

并保存该文件。顺便说一句,PhantomJS()在那之后就不再工作了。我只是返回到/etc/hosts文件并将其切换回localhost

代码语言:javascript
复制
127.0.0.1    localhost

它又能工作了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18916123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档