2011-05-23 10 views
1

私は、次のような表を持っています0     OK
第二パート#    $ 2.00     廃止
N番目のパート#      $ N.00    

順序変更

私のJavaコードでは、テーブルの大きさ、列の数、Nが(実行時まで)何もわからない「Nth Part#」のステータスが検索されます。 Ruby/WATIRでは、テーブルのIDを使ってHTMLを取得し、部品番号が一致するまでRubyを繰り返し使用して、その行の対応するステータスをStatusカラムでチェックします(どちらのカラムでも、 hdヘッダーの行に設定されています)。

Seleniumの標準テーブル参照関数selenium.getTable( "table.1.2")は、各テストで同じ内容を含む静的テーブルに対してのみ機能します。過剰なselenium.get_html_sourceは、セレニウムがすでにテーブルを見つける方法を知っているので、無駄です。そして、Webページ全体を解析する必要があります。

テーブルのhtmlを取得する方法や、行や列を繰り返し処理する最善の方法は何ですか?

ありがとうございます。

答えて

0

あなたが求めているものではありませんが、ユニークなID(あなたの場合のように聞こえる部品番号)をtrのhtml IDに割り当てることで同様の問題を解決しました。次に、私はテストのために必要な行と列を得るために、セレナムのxpathロケータを使いました。

+0

ありがとう、ウェズリー。私はそれが私が望むように働いていると思う。 xpathを使うと、例外に基づくカウントを避ける方法があるようですが、xpathは私がプログラミング言語と呼ぶものではありません。私はw3schoolsチュートリアルを今行っています。それは仕事で学んでいると思います。 :-) –

1

一番簡単な方法は、あなたがnが実行時にどうなるかを知っていればn番目の行の「ステータス」のセルを取得するためにgetTable

このような
selenium.getTable("table." + (1 + n) + ".3") 

を使用することです。

あなたがテーブルのすべての行を反復処理しようとしている場合は、この

try { 
    for(int n = 1; true; n++) { 
     String cellContents = selenium.getTable("table." + n + ".3"); 
     //do something with n 
    } 
} 
catch { 
    //handle end of table 
} 

、あるいは

final int rowCount = (int)selenium.getXPathCount("id('table')/tbody/tr"); 
for(int n = 1; n < rowCount; n++) { 
    String cellContents = selenium.getTable("table." + n + ".3"); 
} 

getTable(locator.row.column)rowcolumnでそれを覚えていますような何かを行うことができますありがとう、ウェズリー。1で始まる。

+0

ありがとう!その種は働いた。いくつかの注意点: –

+0

@Tihamer Toth-Feijel何か私はあなたを助けることができる特定の? –

+0

しかし、いくつかの警告。次の式では、selenium.getTable( "table。" + n + ".3"); "テーブル"。テーブルのIDです。それがidを持っていない場合、またはあなたがそれを知らない場合、それは動作しません。何だろう? 第2に、行(および列)をカウントするための例外エラーを使用するのはむしろ... iffyのようです。 getXpathCount()はそれを取得する必要がありますが、私はそれに非常に時間がかかりました。次のようになりました。 int rows = selenium.getXpathCount( "// table [@ id = 'mytable'] // tr")intValue();columns = selenium.getXpathCount( "// table [@ id = 'mytable'] // tr [2] // td"); intValue(); –

関連する問題