2016-07-06 8 views
1

私は、以下のHTMLを持っています。これは私が試したものです:テーブル行のテキストが変更されるのを待つ方法はありますか?</p> <pre><code><tbody> <tr> <td> <span> <span> I Will Change </span> </span> </code></pre> <p>私はスパン変化の内のテキストとは、変数に新しいテキストを格納する際把握しようとしています:

waitForClick = wait.until { 
     newText = ExpectedConditions.invisibilityOfElementWithText(xpath, //path for the span with the text 
} 

これは、構文エラーを生成し、私はinvisibilityOfelementswithTextを使用するかどうかはわかりません。 Rubyでこれをどのように使うことができますか?テキストの変更に気づく最も良い方法は何ですか?私は、開発者がルビーいないよので、私はwait.untilどちらか

+0

何が起こると思われますか?表示されなくなったSPAN要素、変更するテキスト、またはテキストが消えるか、または? – JeffC

+0

@JeffC変更する範囲内のテキスト –

+0

あなたの質問を再度読み、テキストをクリーンアップして、それが意味するものを言うようにしてください。あなたは句読点や言葉がありません。あなたの努力と助けが役に立つようにオンライン参考書を作っているので、文法は重要です。 "[ask]"、特にリンク先のページを読むことは、サイトを理解するのに役立ちます。 –

答えて

0

を持つことはできませんテキストがに変わりますかわからないが、私はアイデアのようなものであることが必要だと思います:

while(driver.PageSource.Equals("I Will Change")) 
{ 
    sleep(1000) 
} 
+0

PageSource?それはあまり具体的ではないし、ポーリングの間の秒はちょっと長い。 – JeffC

+0

driver.FindElement(By.xpath( "// span {(変更するテキスト()、 '私は変更します'))")。Count)> 0)、要素が存在するまでのアイデアです。ループ中 –

0

IドンExpectedConditionsを使ってこれを行う方法があるとは思わない。テキスト関連のメソッドは、テキストが変更されるのを待たずにテキストを見つけることに関連しています。 JavaではFluentWaitがありますが、Rubyのリファレンスが見つかりません。 FluentWaitでは、現在のテキストを持つ現在の要素がfalseを返すのを待つことができるようにカスタムの待機を書くことができます。これはテキストの変更を通知します。それ以外は、あなた自身で実装する必要があります。私は、Rubyを知らないが、擬似コードは、あなたがそれを自分で実装する場合は、上記のコードにタイムアウトを追加していることを確認してください

timeout = 20 // seconds 
while (element.text == "I Will Change" and timeElapsed < timeout) 
{ 
    sleep(100) 
} 

ようなものです。予想されるテキストを少し消してしまわず、スクリプトが停止して終了しないようにします。

InvisibilityOfElementWithText()メソッドでは、表示されないか、削除される要素を探しています。私はそれが要素を維持することを期待しているので、ここにあなたが望むものだとは思っていませんが、それに含まれるテキストは変化します。

関連する問題