2016-11-06 81 views
1

我有以下Selenium Webdriver脚本与Python。但我得到的错误:Firefox驱动程序无法启动Selenium 3.0.1与FF49和Python

from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 

caps = DesiredCapabilities.FIREFOX 
caps["marionette"] = True 
driver = webdriver.Firefox(capabilities=caps) 

driver.get("http://www.mahsumakbas.net") 

print driver.title 

driver.close() 

错误是:

Traceback (most recent call last): File "C:\Mahsum\DevelopmentWorkSpace\Eclipse\Java\selenium_proj\src\hello.py", line 6, in driver = webdriver.Firefox(capabilities=caps) File "C:\Python27\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 135, in init self.service.start() File "C:\Python27\lib\site-packages\selenium\webdriver\common\service.py", line 71, in start os.path.basename(self.path), self.start_error_message) selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

Exception AttributeError: "'Service' object has no attribute 'process'" in > ignored

硒webdriver的版本是:3.0.1
火狐:49.0.2
geckodriver:v0.11.1- win64

我将geckodriver路径添加到Windows PATH var iable。

问题在哪里?

+2

看起来是的[这]一式两份(http://stackoverflow.com/questions/40208051/selenium-using-python-geckodriver-executable-needs-to -BE-路径中)。 – MikeJRamsey56

+0

您是否尝试重新启动机器并运行脚本? –

+0

你可以尝试在service.py的“os.path.basename(self.path)”一行中打印路径self.path,并检查python在哪里查找可执行文件(geckodriver.exe)? –

回答

2

您可以将'geckodriver'.exe放在Python的基本路径中,它可以工作。

或者,您必须在初始化时声明geckodriver的路径,如果您希望有一个干净的Python文件夹。无论是每次运行脚本还是通过PATH进行操作,就像您所说的那样。正如Naveen所说,正确保存PATH之前需要重新启动。您也可以尝试在Windows命令行运行以下命令:

setx path "%path%;c:\path\to\geckodriver-folder" 
+0

不要通过将geckodriver存储在它的基本目录中来盗取你的python安装 –

0

最终的代码是这样的后续工作和:geckodriver.exe的

binary = FirefoxBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe") 
driver = webdriver.Firefox(firefox_binary=binary) 

设定的路径没有文件名(仅文件夹,它是放置)PATH可以放大。

这个时候,我有一个问题:

driver.close()不关闭Firefox浏览器。
时变化作为driver.quit()它关闭,但下面的行是出现在控制台:

'NoneType' object has no attribute 'path'

没有任何指示器,以显示它是警告或错误。只是排队。

+0

你能分享一下你的代码吗?看起来你有一个没有价值的对象,即'NoneType'。此外,如果我的答案帮助你,然后将其标记为已接受,并为你的新问题创建一个新问题。这就是Stack的工作原理 – MSJ

+2

尝试添加Firefox个人资料 profile = webdriver.FirefoxProfile() webdriver。Firefox(功能=帽子,firefox_profile =个人资料) – patricmj

+0

您应该将您的评论写为@patricmj的回答,因为它会以更加明显的方式显示 - 并且您将获得名誉点,因为它是实际的解决方案。 – boardrider

0

尝试添加Firefox配置文件

profile = webdriver.FirefoxProfile() 
webdriver.Firefox(capabilities=caps,firefox_profile=profile) 
相关问题