1

各行にリンクが含まれるテーブルがある Web サイトの情報をスクレイピングする必要があります。

そのテーブルの各リンクをクリックして、生成されたページから情報を取得し、前のページに戻るようにします。

t = browser.table(:class => "tblElencoProdotti")

t.links(:class => "TXT10b").each do |l|
  l.click
  #do some stuff
  browser.back
end

残念ながら、戻るアクションにより、「ドキュメントの有効期限が切れました。このドキュメントは利用できなくなりました」というエラーが表示されます。

これは、デフォルトのffセッションで手動で操作を行い、戻る矢印を押すと機能しますが、watirを開いたウィンドウでそれを行うと、どういうわけか機能しません。

4

2 に答える 2

3

毎回実際にクリックしてブラウザで戻る必要がある理由は何ですか?

すべてのリンクを保存してから、1 つずつアクセスしてみませんか。

browser.table(:class => "tblElencoProdotti").
  links(:class => "TXT10b").map(&:href).
  each { |url| browser.goto url }

更新

JavaScript が原因でリンクをクリックすることしかできない場合は、次のmagicようにしてみてください。

links_count = browser.table(:class => "tblElencoProdotti").links(:class => "TXT10b").size
links_count.times do |index|
  browser.table(:class => "tblElencoProdotti").links(:class => "TXT10b")[index].click
  browser.back
end

この解決策は、キャッシュをクリアする必要があります。よくわかりませんが、すべてを再配置し、既にキャッシュされた要素に依存しないためのより良い方法があるかもしれません。

于 2013-05-19T16:56:40.360 に答える