0

我想扫描所有打开的浏览器窗口以查找输入标签并提交按钮。我通过从加载的页面中抓取链接打开了所有这些窗口。我的代码如下。

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当我尝试时不接受任何论点。

4

2 回答 2

1

要切换到弹出窗口,您可以使用:

driver.switch_to().window(handle)

所以可以做这样的事情:

#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
于 2012-05-01T16:56:15.527 回答
0

I used following code, its helped me to open each link in new tab.

@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
于 2012-08-29T09:48:05.820 回答