2016-09-14 1 views
-1

私はしばらく過ごしましたが、助けになるものは何も見つかりませんでしたので、私は自分自身に尋ねました。Watir:if文のトラブル

とにかく、私は悪意のあるものではないボットは、フォーラムで特定のフォーラムスレッドに応答するようにしています。しかし、私は、スレッドが特定の名前を持っているかどうかを検出し、そうであればそのスレッドをクリックするif文を作成することに固執しています。これは、私が来ている最も近いものです:

def Replies() 
    while true 
    $browser.div(:text => ':HexBot/Summon') 
    sleep(5) 
    $browser.goto <insert link here. i didn't include it for privacy reasons> 
    end 
end 

このやるべきことは、ページごとに5秒を更新しています。 ':HexBot/Summon'と表示されているスレッドを見ると、そのスレッドをクリックします。しかしながら。私はちょうどエラーが発生します。私はif文を使わずにこれを完全にやってみましたが、それもエラーでした。

答えて

1

は、私が質問を理解するので、これはあなたが求めているではない何かであるなら、私に知らせて、完全にはよく分からない:5秒ごとに(永遠に)まで、ページをリロードする必要があります

def Replies() 
    until $browser.div(:text => ':HexBot/Summon').present? 
    sleep(5) 
    $browser.goto <insert link here> 
    end 
    $browser.div(:text => ':HexBot/Summon').click 
end 

目的のテキストが表示され、その時点でテキストがクリックされます。また、$browser.gotoステートメントの代わりに$browser.refreshを使用することもできます(正しいページから開始することを前提とします)。

最後に、この質問watirとタグ付けしました。私はwatir-webdriverを使用していますが、いくつかの違いがありますが、私がここで提供しているものがうまくいけばうまくいきます。

+0

ええ、私はfireirが私と協力したくないので、watir-webdriverの代わりにwatirを使用します。 Btw、私はこれが私が探していたものだと思うが、まだそれをテストする機会はなかった。ありがとう! – zzzz

+0

はい、Firefox 48以降では 'watir-webdriver'を使用できません。 http://stackoverflow.com/questions/39185507/watir-webdriver-doesnt-do-anything-after-opening-browser-firefox/39185569#39185569を参照してください。私の方法はあなたのために働くことを望む! – pjd

+0

48+にはgeckodriverが必要です。初期化時に 'marionette:true'を設定することで' watir-webdriver'と一緒に使うことができます。あるいは 'watir'> v6.0と一緒に使うことができます。デフォルトではtrueに設定されています。 – titusfortner