1

この他の質問で説明したように、コードの最適化に問題があります。WebDriver の 2 つのインスタンスを同時に実行する必要があるだけだと考え始めています。Selenium WebDriver オブジェクトを複製/フォーク/ディープクローンする方法はありますか? 私は単純にマーシャリングとアンマーシャリングを試みましたが、これは望ましい結果をもたらしませんでした。

成功した使用例は、現在 Web サイトにある 1 つのウィンドウのコピーを作成し、その複製の瞬間から同じ JavaScript と CSS を使用して同じ Web サイトに別のウィンドウを生成することです。サーバーにページを再度要求する必要はありませんが、ローカルでリロードします。その後、それらは発散する可能性があります。

4

1 に答える 1

0

はい、それを実証するために、以下のコードを書きました:-

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.navigate.to "http://en.wikipedia.org/wiki/Cascading_Style_Sheets"

link_arr = driver.find_elements(:xpath,"//a")[2..4]
link_arr.map!{|e| e.attribute("href")}

link_arr.each do |link|
     driver.execute_script("window.open(\"#{link}\")") if link
end

p driver.window_handles.size # => 4
# the below will give you the title of each opened window
p driver.window_handles.map{|d| driver.switch_to.window(d);driver.title}
# => ["Cascading Style Sheets - Wikipedia, the free encyclopedia", 
#"Wiki Loves Monuments India | The Wikipedia photo contest around Cultural Heritage", 
#"Wiki Loves Monuments India | The Wikipedia photo contest around Cultural Heritage", 
#"Cascading Style Sheets - Wikipedia, the free encyclopedia"]

このようにして、任意のブラウザ ウィンドウに移動し、作業を完了してウィンドウを閉じることもできます。

于 2013-09-05T10:47:45.673 に答える