2012-04-27 4 views
4

私はのようになりますHTMLの部分があります簡単にテキストが含まれているdiv要素を識別するために、いかなる種類のIDは、ノータイトル、何の記述子がありませんWatirでは、テキストの一部からフルテキストを取得する方法は?

<table><tbody><tr> 
<td><div> Text Goes Here </div></td> 
<td> ... rest of table 

を。

ページにエラーが発生した場合、エラーは "Text Goes Here"の位置に挿入されます(エラーが発生しない限りテキストはありません)。各エラーには「有効」という単語が含まれています。 例:

if browser.frame(:index => 0).text.includes? "valid" 
    msg = # need to get full text of message 
    return msg 
else 
    return true 
end 

はでフルテキストを取得する方法はあります:私は現在、このように見てワチールコードを持っているか、「無効な日付範囲選択」

「フォームが有効な名前が含まれている必要があります」このような状況? 基本的に:「valid」というテキストを含む要素の全文を返しますか?

使用:ワチール2.0.4、0.4.1 webdriverを

答えて

1

は、有効が見つからない場合、それはnilを返す必要があります。この

return browser.div(:text => /valid/).text 

または

return browser.table.div(:text => /valid/).text 

を試してみてください。

+2

これを行うには注意が必要です。テキストロケータは、子要素のテキストを含む要素のテキストをチェックします。たとえば、テーブルの周りにdivタグがある場合、最初のソリューションはテーブルの特定のdivではなく、テーブル内のすべてのテキストを提供します。 –

+0

あなたは正しいです。それはhtml-under-testの小さなスニペットでの問題です。このような小さい視野で大きな画像に対して安全なソリューションを作成することはできません。 –

2

divを頻繁に使用しているので、Daveが答えているように正規表現を使ってテーブルセルを探す傾向があります。ネストしたテーブルがたくさんある場合を除き、必要なテキストだけを返す可能性が高くなります。 「有効」は別の場所に表示される可能性がある場合

また、あなたは

を探すために、テキストの少し大きめのサンプルを提供することができます。ブラウザ(:cell => /valid/).text

関連する問題