OSError: [Errno 8] Exec格式错误:"chromedriver"在Ubuntu服务器上使用Chromedriver



我正在尝试将Chromedriver与Ubuntu(AWS实例(一起使用。我已经让Chromedriver在本地实例中工作没有问题,但在远程实例中这样做会遇到很多问题。

我使用以下代码:

options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--headless')
options.add_argument('--disable-dev-shm-usage')
options.add_argument("--remote-debugging-port=9222")
driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', chrome_options=options)

然而,我一直得到这个错误:

Traceback (most recent call last):
File "test.py", line 39, in <module>
driver = webdriver.Chrome()
File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__
self.service.start()
File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 76, in start
stdin=PIPE)
File "/usr/lib/python3.6/subprocess.py", line 729, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: 'chromedriver'

我相信我使用的是Selenium、Chrome和Chromedriver的最新版本。

Chrome版本为:Version 78.0.3904.70 (Official Build) (64-bit)

硒:

ubuntu@ip-172-31-31-200:/usr/bin$ pip3 show selenium
Name: selenium
Version: 3.141.0
Summary: Python bindings for Selenium
Home-page: https://github.com/SeleniumHQ/selenium/
Author: UNKNOWN
Author-email: UNKNOWN
License: Apache 2.0
Location: /home/ubuntu/.local/lib/python3.6/site-packages
Requires: urllib3

最后,对于Chromedriver,我几乎可以肯定我在这里下载了最新版本:https://chromedriver.storage.googleapis.com/index.html?path=78.0.3904.70/.这是mac_64版本(我在mac上使用Ubuntu(。然后我把chromedriver放在/usr/bin中,因为我读到这是常见的做法。

我不知道为什么这不起作用。我能想到的几个选择:

  1. 某种访问问题?我是一个使用命令行和ubuntu的初学者——我应该以";根";使用者

  2. Chromedriver和Chrome版本之间不匹配?有没有办法确定我有哪个chromedriver版本?

  3. 我看到Chromedriver和Selenium位于不同的位置。硒在:Location: /home/ubuntu/.local/lib/python3.6/site-packages中,我已将chromedriver移动到:/usr/bin。这会造成问题吗?

Ubuntu服务器18.04 LTS(64位Arm(:

  1. 下载Chrome:wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
  2. 安装Chrome:sudo dpkg -i google-chrome-stable_current_amd64.deb
  3. 如果出现错误,请运行:sudo apt-get -f install
  4. 检查铬:google-chrome --version
  5. 下载适用于Linux的chromedriver:wget https://chromedriver.storage.googleapis.com/78.0.3904.70/chromedriver_linux64.zip
  6. 解压缩chromedriver,如果需要安装解压缩sudo apt install unzipunzip chromedriver_linux64.zip
  7. 将chromedriver移动到/usr/bin:sudo mv chromedriver /usr/bin/chromedriver
  8. 检查chromedriver,运行命令:chromedriver
  9. 安装Java:sudo apt install default-jre
  10. 安装Selenium:sudo pip3 install selenium

创建包含以下内容的测试文件nano test.py。按CTRL+X退出,按Y保存。执行您的脚本-python3 test.py

#!/usr/bin/python3
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--headless')
options.add_argument('--disable-dev-shm-usage')
options.add_argument("--remote-debugging-port=9222")
try:
driver = webdriver.Chrome(chrome_options=options)
driver.get("https://www.google.com")
s = driver.find_element_by_name("q")
assert s.is_displayed() is True
print("ok")
except Exception as ex:
print(ex)
driver.quit()

使用Docker和硒/独立chrome调试的示例:

  1. 安装docker,安装步骤如下
  2. 启动容器,使用sudo docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome:3.141.59-xenon命令,这里有不同的选项
  3. 在AWS中打开您实例的安全组,并添加TCP规则以进行连接。您只能为Selenium添加自己的IP和端口4444
  4. 从本地运行测试
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('--headless')
options.add_argument('--disable-dev-shm-usage')
options.add_argument("--remote-debugging-port=9222")
driver = webdriver.Remote(command_executor="http://your_instance_ip:4444/wd/hub",
desired_capabilities=options.to_capabilities())

我正在ec2-ubuntu上运行以下程序:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver", chrome_options=options) #Give the full path to chromedriver

试试看。如果不起作用,我会找到更多的设置。

相关内容

  • 没有找到相关文章

最新更新