为什么Chrome驱动程序崩溃或Cron作业找不到元素?

时间:2018-10-08 15:03:42

标签: ruby-on-rails selenium cron selenium-chromedriver watir

我已经使用watir / mechanize和chrome驱动程序创建了一个刮板,它在开发中非常有效。 它无法在生产中使用,chrome驱动程序崩溃了,所以我不得不在我的scraper的开头添加这些行(在stackoverflow的另一个主题上找到了这些行)

 args = %w[--disable-infobars --disable-dev-shm-usage --headless --no- 
 sandbox --disable-gpu]
    options = {
     binary: ENV['GOOGLE_CHROME_BIN'],
     prefs: { password_manager_enable: false, 
     credentials_enable_service: false },
     args:  args
  }
  browser = Watir::Browser.new(:chrome, options: options)

现在,即使使用我的后台作业,它在生产中也能很好地工作(我基本上是通过单击按钮来触发正在废弃的后台作业的。)

我还有另一个后台作业,这次是Cron作业,每两周自动刮一次。 但是由于某种原因,这是行不通的。在添加以上所有行之前,我得到了相同的错误消息

 Selenium::WebDriver::Error::UnknownError: unknown error: Chrome failed 
  to start: crashed (unknown error: DevToolsActivePort file doesn't 
exist) 
 (The process started from chrome location /app/.apt/o...)

有时我不会收到此错误消息,并且抓取程序以Cron作业开始(无需我进行任何更改),但是它只是无法找到我想要的元素(而它每次都可以与其他后台作业一起使用,而不使用Cron和它是完全相同的内容)

您知道我在使用Cron作业时为什么会有不同的行为吗? 我会理解是否到处都存在相同的错误,但是我不明白为什么只有在使用Cron的情况下它才崩溃或很难找到我的元素。 最后一个问题:为什么我的错误始终在变化?通常,我可以修复某些问题,并且可以使用很长时间,但是使用Selenium / ChromeDriver,似乎我必须每三天更新一次代码!

非常感谢!

0 个答案:

没有答案