Python2.7中的WebDriverException()在Amazon Linux AMI Red-hat 7.2上使用针对Chrome的xvfb-run

时间:2018-12-20 07:30:26

标签: python-2.7 selenium selenium-webdriver selenium-chromedriver

尝试通过

运行铬的硒
/usr/bin/xvfb-run -a -e /tmp/selenium.log -w 0 /usr/bin/python2.7 

并出现

之类的错误
(<class 'selenium.common.exceptions.WebDriverException'>, WebDriverException(), <traceback object at 0x7fc7cfc9c128>)

奇怪的是,我什至没有获得完整的堆栈跟踪,并且xvfb-run的-e选项也没有在文件中返回任何错误。

这是我的代码

from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 
f = webdriver.ChromeOptions() 
browser =webdriver.Chrome(executable_path='/home/local/chromedriver',chrome_options=f) 
browser.get(url)
browser.quit()

我也尝试过 executable_path='/usr/bin/chromedriver'且没有execute_path

但出现相同的错误。

最初是通过Firefox使用python 2.6 的。

我检查了大约10-15个类似的问题,甚至关于如何启用更多跟踪或调试的问题,但在这里似乎没有一种解决方案对我有用。

硒版本3.141.0

编辑: 我更新了一些代码以能够获得完整的堆栈跟踪,并且出现了此错误

  

WebDriverException:消息:浏览器似乎已退出   我们可以连接。

多挖一点,发现它与硒/浏览器有关  安装了旧的硒版本2.53

上述错误已消失,但现在我被所有错误的对等错误重置连接,下面是堆栈

(<class 'socket.error'>, error(104, 'Connection reset by peer'), <traceback object at 0x1e1e320>)
Traceback (most recent call last):
  File "/var/www/Goose/src/goose/network.py", line 137, in get_html
    browser.get(url)
  File "/var/www/Goose/src/selenium/webdriver/remote/webdriver.py", line 245, in get
    self.execute(Command.GET, {'url': url})
  File "/var/www/Goose/src/selenium/webdriver/remote/webdriver.py", line 231, in execute
    response = self.command_executor.execute(driver_command, params)
  File "/var/www/Goose/src/selenium/webdriver/remote/remote_connection.py", line 395, in execute
    return self._request(command_info[0], url, body=data)
  File "/var/www/Goose/src/selenium/webdriver/remote/remote_connection.py", line 426, in _request
    resp = self._conn.getresponse()
  File "/usr/lib64/python2.6/httplib.py", line 1049, in getresponse
    response.begin()
  File "/usr/lib64/python2.6/httplib.py", line 433, in begin
    version, status, reason = self._read_status()
  File "/usr/lib64/python2.6/httplib.py", line 389, in _read_status
    line = self.fp.readline(_MAXLINE + 1)
  File "/usr/lib64/python2.6/socket.py", line 479, in readline
    data = self._sock.recv(self._rbufsize)
error: [Errno 104] Connection reset by peer

甚至安装了requests [security],因为我已经看到一个原因。

1 个答案:

答案 0 :(得分:0)

解决了, 问题是chrome浏览器和驱动程序未正确安装,并且它们的版本不兼容

使用从我那里获得的脚本安装了最新的chrome,以便在ami服务器上运行 https://intoli.com/blog/installing-google-chrome-on-centos/

完美安装, 添加了几个关键参数,

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('path to driver',chrome_options=chrome_options)

中提琴开始工作