あちこちのすべてのステップを要約すると便利だと思いました。
問題は、 Watir :: Webdriver Table #to_aが生成する可能性があるが、はるかに高速な、ページのテキストコンテンツから文字列で満たされた同じ配列オブジェクトを生成する方法でした。
recArray = Nokogiri::HTML(htmlcode). **??**
だから私が以前やっていたようにこれの代わりに:
recArray=$browser.table(:class, 'detail-table w-Positions').to_a
ページ全体のhtmlを文字列としてNokogiriに送信し、解析を実行させます。
recArray=Nokogiri::HTML($browser.html).css('table[@class="detail-table w-Positions"] tr').to_a
これにより、必要なテーブルの行が見つかり、それらを配列に配置しました。
その配列の要素はまだNokogiri(Table Row?)タイプであるため、まだ完了していません。これは、次のようなことを試みたときにバーフ.join(",")
されました(たとえば、.CSVファイルやデータベースへの書き込みに便利です)。
したがって、以下は各行要素を繰り返し処理し、それぞれを純粋なRuby文字列型の配列に変換します。この配列には、htmlタグが削除された各テーブルセルのテキストコンテンツのみが含まれます。
recArray= recArray.map {|row| row.css("td").map {|c| c.text}.to_a } # Could of course be merged with above to even longer, nastier one-liner
各セルは、以前はノコギリ要素タイプであり、.text
マッピングが廃止されていました。
大幅なスピードアップを実現。
次に、Rubyコードファイル内のすべてのWatir ::WebdriverTable#to_a
オブジェクトのメソッドをグローバルにオーバーライドするのに何が必要か疑問に思います。
(100%互換性がない可能性があることはわかっていますが、コードの書き換えを大幅に減らすことができます。personal.lib.rbインクルードファイルで試してみてください。)