2017-08-09 38 views
1

所以這是我試圖使用的控制器的代碼。Watir-webdriver沒有抓住指定的div,不知道爲什麼?

class ScraperController < ApplicationController 

    def getinformation 
     require 'watir-webdriver' 
     require 'phantomjs' 

     @browser = Watir::Browser.new:phantomjs 
     @browser.goto "http://reddit.com" 
     @divs = @browser.divs(class: "title may-blank ") 

    end 

end 

在視圖頁面,我有<%= @ divs.length%>,它的輸出0。當我鍵入<%= browser.title%視圖頁>它給了我「reddit的:在互聯網的首頁「,所以我知道我從網頁上獲得了一些東西。

通過檢查主頁上某些帖子的標題,我發現div類「標題可能爲空」,並且我嘗試過使用div類「標題可能爲空」和「標題可能爲空」 。最後一個空格,在reddit頁面上進行檢查時顯示的內容,以及末尾沒有空格的內容。兩者都沒有給我什麼。

+1

您應該切換到 「的Watir」 而不是 「的Watir-的webdriver」。 Watir-Webdriver代碼庫已被棄用。這是更新現在在Watir發生。 –

+0

感謝您的建議!會做。 – ChrisWilson

回答

4

假設你正在試圖找到:

<a class="title may-blank outbound" data-event-action="title" href="https://i.redd.it/kxtpiskh9mez.jpg" tabindex="1" data-href-url="https://i.redd.it/kxtpiskh9mez.jpg" data-outbound-url="https://out.reddit.com/t3_6si8wj?url=https%3A%2F%2Fi.redd.it%2Fkxtpiskh9mez.jpg&amp;token=AQAAKQiLWXNK30ZkH9-TplVYPCVEIJwNWgqFZCdFuOc3O5l1c7M1&amp;app_name=reddit.com" data-outbound-expiration="1502283817000" rel="">Fries</a> 

的問題是該元素是a而非div。你至少需要做:

@browser.links(class: "title may-blank ") 

雖然這會返回結果,但它可能不是你所期望的。在Watir中也支持在String中支持多個類別。

我覺得你真的想只是:

@browser.links(class: "title") 

如果你想兩個類,使用方法:

@browser.links(class: ["title", "may-blank"]) 
+0

非常感謝你! – ChrisWilson

+0

我試圖通過Watir文檔之前試圖解決我的問題,然後發佈在stackoverflow上,但似乎無法找到我的答案。難道我只需要看起來更難,或者你知道Watir有一個很好的教程嗎? – ChrisWilson

+0

你可以試試我的書,[Watirways](https://leanpub.com/watirways/read#leanpub-auto-locating-an-element---basics)。這只是部分寫的,有點過時,但這是一個起點。 –

相關問題