首页 > 解决方案 > 无法在 aws cloud9 中使用 Python 中的 selenium 运行 chromedriver

问题描述

在将 selenium、chrome 和 chromedriver 安装到 aws cloud9 后,我尝试执行 chromedriver。但是发生了PATH错误。

我检查了 chromedriver 路径是否正确。而且我不知道为什么会发生这个错误。

aws:~/environment/seleniumTest $ ll /home/ec2-user/environment/seleniumTest/chromedriver
-rwxr-xr-x 1 ec2-user ec2-user 8496784 Sep 13  2018 /home/ec2-user/environment/seleniumTest/chromedriver

有什么解决方案可以解决这个问题吗?

我的步骤如下,

1.安装selenium pip install selenium -t ./

2.安装chrome curl https://intoli.com/install-google-chrome.sh | 重击

3.下载chromedriver curl -SL https://chromedriver.storage.googleapis.com/2.42/chromedriver_linux64.zip > chromedriver.zip 解压chromedriver.zip

4.执行Python代码如下

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def lambda_handler(event, context):
    options = Options()
    options.add_argument('--headless')

    driver = webdriver.Chrome('/home/ec2-use/environment/seleniumTest/chromedriver', chrome_options=options)

    return(0)

我收到“'chromedriver' 可执行文件需要在 PATH 中”错误。

Response
{
    "errorMessage": "Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home\n",
    "errorType": "WebDriverException",
    "stackTrace": [
        [
            "/var/task/seleniumTest/lambda_function.py",
            9,
            "lambda_handler",
            "driver = webdriver.Chrome('/home/ec2-use/environment/seleniumTest/chromedriver', chrome_options=options)"
        ],
        [
            "/var/task/selenium/webdriver/chrome/webdriver.py",
            73,
            "__init__",
            "self.service.start()"
        ],
        [
            "/var/task/selenium/webdriver/common/service.py",
            83,
            "start",
            "os.path.basename(self.path), self.start_error_message)"
        ]
    ]
}

Function Logs
Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
: WebDriverException
Traceback (most recent call last):
  File "/var/task/seleniumTest/lambda_function.py", line 9, in lambda_handler
    driver = webdriver.Chrome('/home/ec2-use/environment/seleniumTest/chromedriver', chrome_options=options)
  File "/var/task/selenium/webdriver/chrome/webdriver.py", line 73, in __init__
    self.service.start()
  File "/var/task/selenium/webdriver/common/service.py", line 83, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

标签: amazon-web-servicesseleniumselenium-webdriveraws-cloud9

解决方案


我不确定您是否正确指定了 Chromedriver 的 executable_path,我认为以下应该可以工作:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def lambda_handler(event, context):
    options = Options()
    options.add_argument('--headless')

    driver = webdriver.Chrome(executable_path='/home/ec2-user/environment/seleniumTest/chromedriver', chrome_options=options)

    return(0)

推荐阅读