6

所以可能最重要的事情是我正在使用c9。它是云中的 IDE,因此在尝试将 Chrome 或 Firefox 与 Watir 一起使用时给我带来了很多麻烦,因为我无法编写 Chrome 或 Firefox 浏览器的路径。我也尝试了所有我能找到的等待方法,但它们都不起作用。

def save
    require 'watir'
    require 'phantomjs'

    @browser = Watir::Browser.new :phantomjs
    @browser.goto "https://kroger.softcoin.com/programs/kroger/digital_coupons/?origin=DigitalCoupons&banner=Smiths#contentBox"

    @browser.div(id: "contentBox").wait_until(&:present?).text
    @products = @browser.divs

end

错误

30 秒后超时,等待 #"contentBox", :tag_name=>"div"}> 上的真实条件

我想解决无法从 Smiths 网站抓取数据的问题的方法是使用 chrome 浏览器,但我收到错误“无法连接到 chromedriver 127.0.0.1:9515”

4

2 回答 2

3

我有类似的问题,我通过安装带有 selenium 的 docker 容器解决了这个问题

# docker-compose.yml file
version: '2'
services:
  selenium:
    image: selenium/standalone-chrome
    ports:
      - "4444:4444"
    restart: always
    volumes:
      - "${PWD}/spec:${PWD}/spec" # I exposed `spec` dir to cover code with specs
      - /dev/shm:/dev/shm


# test.rb file
@browser = Watir::Browser.new(
  :remote,
  url: 'http://localhost:4444/wd/hub'
)

使用命令运行容器:

docker run -it -d -P -p 4444:4444 -v `pwd`/spec:`pwd`/spec selenium/standalone-chrome

然后再试一次

(您甚至可以在 VPS 或其他远程服务器上运行容器,然后连接到它)

于 2017-09-27T14:06:58.703 回答
2

我遇到了类似的问题,安装webdrivers gem 解决了我的问题

$gem install webdrivers

于 2017-09-22T06:01:40.180 回答