Selenium 不会在 Python 中打开浏览器

Posted

技术标签:

【中文标题】Selenium 不会在 Python 中打开浏览器【英文标题】:Selenium doesn't open the browser in Python 【发布时间】:2018-03-01 06:09:56 【问题描述】:

我是 Python 新手,我正在尝试在 Debian 中使用 Selenium,但它不起作用,更具体地说,它似乎停留在一个循环中,没有任何反应。下一个脚本是我使用过的测试:

#!/usr/bin/env python 
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://www.python.org')

当我中断脚本时,会出现以下文本:

Traceback(最近一次调用最后一次):

浏览器中的文件“prueba_parseo.py”,第 7 行 = webdriver.Firefox() 文件 “/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py”, 第 154 行,在 init 中 keep_alive=True)

文件 “/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”, 第 140 行,在 init 中 self.start_session(desired_capabilities, browser_profile)

文件 “/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”, 第 229 行,在 start_session 中 response = self.execute(Command.NEW_SESSION, 参数)

文件 “/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”, 第 295 行,执行中 response = self.command_executor.execute(driver_command, params)

文件 "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/remote_connection.py", 第 464 行,执行中 return self._request(command_info[0], url, body=data)

文件 "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/remote_connection.py", 第 488 行,在 _request 中 resp = self._conn.getresponse()

文件“/usr/lib/python2.7/httplib.py”,第 1111 行,在 getresponse 中 response.begin()

文件“/usr/lib/python2.7/httplib.py”,第 444 行,开始 版本、状态、原因 = self._read_status()

文件“/usr/lib/python2.7/httplib.py”,第 400 行,在 _read_status line = self.fp.readline(_MAXLINE + 1)

文件“/usr/lib/python2.7/socket.py”,第 476 行,在 readline 中 数据 = self._sock.recv(self._rbufsize)

键盘中断

我一直在寻找答案,但没有任何效果。我已经更改了包的版本,export no_proxy="localhost,127.0.0.1"

操作系统:Debian 5

Python:2.7

硒:3.5

壁虎司机:0.17.0

火狐:52.0

我不知道还能做什么或改变什么。 非常感谢!

【问题讨论】:

请确认您的 Firefox 52 与 Geckodriver 0.17.0 和 Selenium 3.5 兼容,我大部分时间都使用 chrome 以防您想尝试使用 chrome,我的 chrome 是 60,chromedriver 是 2.30,selenium 3.4 .0.我认为 selenium 3.5.0 应该没问题。 是的,它们是兼容的。也许我应该更换浏览器并尝试使用 chrome。 我找到了答案。问题是我是远程启动脚本,而不是从本地计算机。 【参考方案1】:

我的猜测是,实际上一切都很顺利,并且浏览器是在后台启动的。它保持打开状态的原因可能是因为默认选项keep_alive=True 我可以在您的回溯中看到。

完成测试后,尝试使用browser.close()browser.quit() 关闭浏览器。

来自文档:

最后,浏览器窗口关闭。你也可以调用quit方法 而不是关闭。退出将退出整个浏览器而关闭` 将关闭一个选项卡,但如果只打开一个选项卡,默认情况下大多数 浏览器将完全退出。

http://selenium-python.readthedocs.io/getting-started.html#simple-usage

【讨论】:

仍然停留在循环中,没有任何变化并且出现相同的文本。看起来问题来自 webdriver,但我不知道为什么。 "keep_alive=True" 不是原因

以上是关于Selenium 不会在 Python 中打开浏览器的主要内容,如果未能解决你的问题,请参考以下文章

selenium 浏览器基础操作(Python)

史上最强大的python selenium webdriver的包装

python使用selenium打开chrome浏览器时带用户登录信息

python使用selenium打开chrome浏览器时带用户登录信息

单击按钮后切换到打开的新浏览器 [Python][Selenium]

Python+Selenium基础篇之3-打开和关闭IE/Chrome浏览器