当前位置: 首页 > 知识库问答 >
问题:

为什么路径中的“chromedriver”不是可执行的?

宇文育
2023-03-14

我试图用这段代码点击“发射地球”按钮。


from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Web
from selenium.webdriver.support import expected_conditions as EC
url = 'https://www.google.com/earth/'
driver = webdriver.chrome()
driver.get(url)
wait = WebDriverWait(driver, 10)
launchEarthButton = wait.until(EC.element_to_be_clickable((By.XPATH, '/html/body/header/div/nav[1]/ul[2]/li[2]/a/span/span' ))
launchEarthButton.click()

但是,我得到了下面的错误消息。 怎么啦? 作为参考,我使用的是MacOs电脑。 我以前遇到过错误路径的问题,但我用ChromedriverManager解决了它。


---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/common/service.py in start(self)
     71             cmd.extend(self.command_line_args())
---> 72             self.process = subprocess.Popen(cmd, env=self.env,
     73                                             close_fds=platform.system() != 'Windows',

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors, text)
    853 
--> 854             self._execute_child(args, executable, preexec_fn, close_fds,
    855                                 pass_fds, cwd, env,

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session)
   1701                         err_msg = os.strerror(errno_num)
-> 1702                     raise child_exception_type(errno_num, err_msg, err_filename)
   1703                 raise child_exception_type(err_msg)

FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver'

During handling of the above exception, another exception occurred:

WebDriverException                        Traceback (most recent call last)
<ipython-input-9-940dd1aefbaf> in <module>
      7 from selenium.webdriver.support import expected_conditions as EC
      8 url = 'https://www.google.com/earth/'
----> 9 driver = webdriver.Chrome()
     10 driver.get(url)
     11 wait = WebDriverWait(driver, 10)

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options, keep_alive)
     71             service_args=service_args,
     72             log_path=service_log_path)
---> 73         self.service.start()
     74 
     75         try:

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/common/service.py in start(self)
     79         except OSError as err:
     80             if err.errno == errno.ENOENT:
---> 81                 raise WebDriverException(
     82                     "'%s' executable needs to be in PATH. %s" % (
     83                         os.path.basename(self.path), self.start_error_message)

WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home


共有1个答案

上官飞
2023-03-14

你们很亲密。 正如您所使用的:

driver = webdriver.Chrome(ChromeDriverManager().install())

缓存/下载的ChromeDriver将用于启动新的google-chrome浏览上下文。

因此您需要删除driver=webdriver.chrome()的第二个实例

 类似资料:
  • $brew安装chromedriver-找不到bash:brew:命令 我下载了chrome驱动程序,甚至把它放在了工作目录中。仍然会出现这个错误。我几乎不知道python是什么。请帮忙。

  • 我写了这个: 我得到了以下错误: 回溯(最近一次调用):文件“C:\Users\atrei\AppData\Local\Programs\Python38-32\lib\site packages\selenium\webdriver\common\service.py”,第72行,在start self中。进程=子进程。Popen(cmd,env=self.env,文件“C:\Users\atr

  • 问题内容: 我正在将selenium与python结合使用,并已从以下站点下载了适用于Windows计算机的chromedriver:http ://chromedriver.storage.googleapis.com/index.html?path=2.15 / 下载zip文件后,我将zip文件解压缩到我的下载文件夹中。然后,将可执行二进制文件(C:\ Users \ michael \ Do

  • ...我不断收到以下错误消息: 但是-如上所述-可执行文件是(!)在路上...这是怎么回事?

  • 问题内容: 我正在将selenium与python结合使用,并已从以下网站下载了适用于Windows计算机的chromedriver:http ://chromedriver.storage.googleapis.com/index.html?path=2.15 / 下载zip文件后,我将zip文件解压缩到我的下载文件夹中。然后,我将可执行二进制文件(C:\ Users \ michael \ D

  • 问题内容: 想知道不指定classpath选项时默认的classpath是什么吗? 问题答案: 当前的工作目录()。 从Java™教程中:PATH和CLASSPATH: 类路径 的 默认值为“。” ,表示仅搜索当前目录。指定CLASSPATH变量或-cp命令行开关将覆盖此值。 这包括子目录吗? 不,在类路径中没有条目是“递归的”。您必须明确列出每个子目录(或jar)。但是,如果您有一个表示clas

  • 考虑创建别名方法。文档说:。我不明白这是什么?假设有 2 个表 - 客户(id,和 假设条件 - 关联路径应该是什么? “Customer.id = Order.customer_id” 或者只是我在某些论坛上看到的“订单”? 有人能为几种情况提供几个例子吗,比如左连接、内连接,当然还有带子句的连接?

  • 我是一个刚开始学习Selenium的新手,目前在ubuntu下使用eclipse。但是在运行我的第一个程序时 我犯了这个错误,我不知道如何设置路径。我只是从github下载了geckodriver的最新linux版本,并将其放在我的桌面上。谢谢你的帮助