用Python点击按钮脚本[复制]

这个问题在这里已有答案:

尝试运行以下脚本转到this网站并单击链接以导出csv .

from selenium import webdriver
driver=webdriver.Firefox()
driver.get("https://www.draftkings.com/contest/gamecenter/46877680")
elem1 = driver.find_element_by_link_text("Export Lineups to CSV")
elem1.click()

我收到以下错误,找不到 geckodriver . 我点了装硒 . 我从一个较旧的视频得到了这个,我目前运行 Python 3.6 所以这也可能是问题的一部分 . 我哪里错了?

Traceback(最近一次调用最后一次):文件“C:\ Program Files \ Python36 \ lib \ site-packages \ selenium \ webdriver \ common \ service.py”,第74行,在start stdout = self.log_file,stderr = self .log_file)文件“C:\ Program Files \ Python36 \ lib \ subprocess.py”,第707行,在init restore_signals,start_new_session中)文件“C:\ Program Files \ Python36 \ lib \ subprocess.py”,第992行, _execute_child startupinfo)FileNotFoundError:[WinError 2]系统找不到指定的文件

在处理上述异常期间,发生了另一个异常:

Traceback(最近一次调用最后一次):文件“C:/Users/mike/Desktop/Lineup1.py”,第2行,在driver = webdriver.Firefox()文件“C:\ Program Files \ Python36 \ lib \ site- package \ selenium \ webdriver \ firefox \ webdriver.py“,第144行,在init self.service.start()文件”C:\ Program Files \ Python36 \ lib \ site-packages \ selenium \ webdriver \ common \ service.py “,第81行,在启动os.path.basename(self.path),self.start_error_message)selenium.common.exceptions.WebDriverException:消息:'geckodriver'可执行文件需要在PATH中 .

回答(2)

2 years ago

实际上,Selenium客户端绑定尝试从系统PATH中找到geckodriver可执行文件 . 您需要将包含可执行文件的目录添加到系统路径 . 在Unix系统上,如果您使用的是与bash兼容的shell,则可以执行以下操作将其附加到系统的搜索路径:

export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step

在Windows上,您需要更新Path系统变量以手动或命令行添加可执行geckodriver的完整目录路径(在将可执行geckodriver添加到系统PATH中后,不要忘记重新启动系统才能生效) . 原理与Unix相同 .

然后尝试使用以下内容

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('path/to/installed firefox binary')
browser = webdriver.Firefox(firefox_binary=binary)

References,

https://github.com/mozilla/geckodriver/releases

https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver

2 years ago

下载geckodriver并将geckodriver.exe文件拖放到项目根文件夹中 . 这样,就不需要在代码中添加geckodriver路径,并再次尝试执行代码 . 不会有任何错误