当前位置: 首页 > 面试题库 >

在heroku上使用chrome驱动程序运行selenium:`找不到Chrome二进制文件'

东方嘉佑
2023-03-14
问题内容

对于Linux设置(和heroku),我是一个菜鸟,如果这个问题很简单,我们深表歉意。

我想在Heroku上运行Selenium Webkit(红宝石)。我遇到了一个困难,我的脚本无法找到Chrome二进制文件。

我实际上让chrome自行工作:

~ $ chromedriver
Starting ChromeDriver 2.22.397932 (282ed7cf89cf0053b6542e0d0f039d4123bbb6ad) on port 9515
Only local connections are allowed.

chromedriver是我从中复制的文件/app/vendor/bundle/bin/chromedriver,只是为了让它现在更容易。chromedriver该文件存在,因为我安装了chromedriver-
helper gem
。这本宝石原本应该使二进制文件可用于红宝石处理,但事实并非如此。

我还尝试了显式设置路径,例如Selenium::WebDriver::Chrome.driver_path = 'chromedriver'在我的Ruby代码中,将上述文件放在根目录中。

一切都可以在本地完美运行(无论是否带有driver_path

可能是什么原因?我从几年前就读过这个SO线程,但是对我来说似乎已经过时了。任何想法将不胜感激!

错误跟踪:

~ $ ruby bin/run.rb
/app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/response.rb:70:in `assert_ok': unknown error: cannot find Chrome binary (Selenium::WebDriver::Error::UnknownError)
  (Driver info: chromedriver=2.22.397932 (282ed7cf89cf0053b6542e0d0f039d4123bbb6ad),platform=Linux 3.13.0-91-generic x86_64)
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/common.rb:78:in `new'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/common.rb:78:in `create_response'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/default.rb:90:in `request'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/common.rb:59:in `call'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/bridge.rb:649:in `raw_execute'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/bridge.rb:123:in `create_session'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/bridge.rb:87:in `initialize'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/chrome/bridge.rb:48:in `initialize'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:64:in `new'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:64:in `for'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver.rb:84:in `for'
    from /app/lib/mealpass_orderer.rb:12:in `initialize'
    from /app/lib/mealpass_orderer.rb:8:in `new'
    from /app/lib/mealpass_orderer.rb:8:in `run'
    from bin/run.rb:3:in `<main>'

更新:

我在AWS EC2服务器上尝试了相同的方式(启动实例,克隆的gitrepo,安装了所有依赖项)。那里也发生同样的情况。也就是说,能够从终端执行chromedriver,但是在运行脚本时看到相同的错误。


问题答案:

ChromeDriver只是Chrome的驱动程序。它需要实际安装在同一台计算机上的实际Chrome浏览器。

Heroku默认未在其测功机上安装Chrome。您需要使用安装Chrome的buildpack。例如:

https://github.com/dwayhs/heroku-buildpack-
chrome

您可以看到它如何获取Chrome:

https://github.com/dwayhs/heroku-buildpack-
chrome/blob/master/bin/compile#L36-38



 类似资料:
  • 我试图在最新的ubuntu上使用chrome驱动程序运行硒[java]测试。[16.04] 我得到了以下错误/异常。作为一个实验,我用我的本机“helloworld应用程序”替换了ChromeDriver二进制文件;我发现硒正在执行我的二进制文件。 我相信打印“端口15306上启动ChromeDriver 2.27.440175(9BC1D90B8BFA4DD181FBBF769A5EB5E575

  • 我正在尝试使用Selenium web驱动程序。我正在使用asp。net mvc。我已经设置了一个非常基本的测试。我基本上只是想打开浏览器。 但当我运行测试我得到这个错误消息 结果消息: 文件c:\chromedriver.exe\chromedriver.exe不存在。驱动程序可以在http://chromedriver.storage.googleapis.com/index.html下载 我

  • 我正在尝试用Chrome运行硒测试。我正在使用C#。 看起来像是chromedriver。已找到exe,但它可以找到Chrome二进制文件。我设置了通往chrome的路径。自动搜索失败后显式执行。我甚至在最后用“chrome.exe”试过了。我总是得到同样的结果: 在以下位置找不到Chrome二进制文件: C:\用户\Vilem\AppData\本地\谷歌\Chrome\应用程序 仅供参考:我有一

  • 问题内容: 我正在尝试运行一个ruby文件,该文件将使用seleniumwebdriver启动chrome驱动程序。我有selenium独立服务器2.35.0。和chromedriver可执行文件已安装。我正在通过运行服务器来启动 两个会话正在启动,chrome驱动程序无法启动。 这是在我使用以下文件运行文件之后 我对此并不陌生,无法找出问题所在。而且,我也试图让它无头运行,所以我正在运行Xvfb

  • 我试图运行一个ruby文件,这将启动chrome驱动程序使用selenium WebDriver。我有selenium独立服务器2.35.0。和chromedriver可执行文件安装。我通过运行来启动服务器, 这是在我使用 我对此很陌生,不知道哪里出了问题。我也试图无头运行它,所以我有Xvfb运行。有人能帮我指出我犯的错误并启动chromedriver吗? 更新: 谁能帮我弄清楚出了什么问题吗?

  • 我试图运行一个项目在硒与铬驱动程序,但我没有使用它一个月后(是一个更新到铬)。当我运行这个项目时,它会打开浏览器,然后立即关闭。 我收到以下错误: Traceback(最近一次调用最后一次):文件"C:\用户\maorb\OneDrive\Desktop\Maor\python\serethd\tvil_arthur.py",第27行,在驱动程序=webDrive中。Chrome()File"C: