2017-09-16 39 views
6

Muhtemelen bununla ilgili en önemli şey, c9 kullanıyorum. Bulutta bir IDE var ve bu yüzden Chrome veya Firefox'u Watir ile kullanmaya çalışırken bana çok fazla sorun veriyor, çünkü Chrome veya Firefox tarayıcısına bir yol yazamam. Ayrıca bulabileceğim her çeşit bekle yöntemini denedim ama hiçbiri işe yaramadı.Watir, web sayfasını ziyaret ettikten sonra herhangi bir element bulmaya çalışırken zaman aşımına uğradı.

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 

Hata

"contentBox" # true durum için bekleyen 30 saniye sonra zaman aşımına: TAG_NAME => "div"}>

ben bu sorunu çözmek için istediğiniz şekilde Smiths web sitesinden veri kazımak mümkün değil bir krom tarayıcı kullanmaktır, ancak "chromedriver 127.0.0.1:9515" bağlanamıyor hatası alıyorsunuz "

+0

Bu özellik, firefox'ta düzgün çalışır ve otomatik olarak beklediği için wait_until() yöntemini kullanmanız gerekmez: varolan: present: enabled. Lütfen firefox için geckodriver kullanmayın, eski firefox kullanın, çok düzgün çalışıyor. – RAJ

+2

Kesinlikle gerekmedikçe eski Firefox kullanmayın; geckodriver bu noktada tam özellikli yakındır. Legacy Firefox, önümüzdeki Selenium 4'te bir seçenek olmayacak. Chrome Sürücü şu anda en iyi destekleniyor, 'Watir :: Browser.new: chrome, başsız: true' yerine phantomjs için bir seçenek olarak göz atın. Daha hızlı ve phantomjs kullanımdan kaldırılıyor. – titusfortner

+0

@titusfortner Firefox'un 52 esp versiyonunda selenyum desteğini geri yüklediğini biliyor musunuz? – RAJ

cevap

2

Ben benzer bir sorun vardı ve webdrivers gem yükleme sabit benim sorun

$gem install webdrivers

+0

Bunu denedim, ama işe yaramadı. – ChrisWilson

3

Ben benzer bir sorun vardı ve komutuyla selenyum ile

# 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' 
) 

Çalıştır konteyner liman işçisi kabı yükleyerek bunu çözüldü:

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

Ve (yine

deneyin Ayrıca VPS veya başka bir remoda bile konteyneri çalıştırabilirsiniz te sunucu ve sonra da bağlanın)