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 中打开浏览器的主要内容,如果未能解决你的问题,请参考以下文章
史上最强大的python selenium webdriver的包装
python使用selenium打开chrome浏览器时带用户登录信息
python使用selenium打开chrome浏览器时带用户登录信息