2012-05-01 3 views
0

開いているすべてのブラウザウィンドウで入力タグと送信ボタンをスキャンします。 私はロードされたページからリンクをつかむことによって、これらのウィンドウをすべて開いています。 私のコードは以下のとおりです。Selenium Rubyを使用して開いているすべてのウィンドウからすべての入力タグと送信ボタンを見つける方法は?

require 'rubygems' 
require 'selenium-webdriver' 
driver = Selenium::WebDriver.for :firefox 
page = driver.get " http://testasp.vulnweb.com " 
link = Array.new(driver.find_elements(:tag_name, "a")) 
link.each do |a| 
    a = driver.execute_script("var d=document,a=d.createElement('a');a.target='_blank';a.href=arguments[0];a.innerHTML='.';d.body.appendChild(a);return a", a) 
    a.click 
end 
i = driver.window_handles 

開かれたすべてのウィンドウIDを取得できます。 これらの開いたブラウザウィンドウから入力要素を見つけたり、ボタンやフォームを送信したりする方法は? window_handles私はそれを試みたときに引数を受け入れません。ポップアップに切り替えるには

答えて

1

、あなたが使用します。私はその私が新しいタブで各リンクを開くのを助けた、次のコードを使用

#Get all of the window handles 
i = driver.window_handles 

#Iterate through the popups 
#Note that starting at index 1 assuming we do not care about the original window 
i[1..i.length].each do |handle| 
    #Switch to popup 
    driver.switch_to().window(handle) 

    #Do whatever processing you want on the popup 
    #Example, get the number of input fields 
    inputs = driver.find_elements(:tag_name, 'input') 
    puts inputs.length 

    #Probably want to close the popup 
    driver.close 
end 

#Switch back to the original window 
driver.switch_to().window(i[0]) 

#Do whatever processing you want on the original window 
puts driver.title 
0

driver.switch_to().window(handle) 

だから、このような何かを行うことができます。

@driver.get "http://thiyagarajan.wordpress.com/" 
    link = @driver.find_elements(:tag_name, "a") 
    link.each do |a| 
    a = @driver.execute_script("var d=document,a=d.createElement('a');a.target='_blank';a.href=arguments[0];a.innerHTML='.';d.body.appendChild(a);return a", a) 
    a.click 
    end 
関連する問題