繁体   English   中英

无法在Ruby Watir中聚焦新窗口

[英]Cannot focus new window in Ruby Watir

在问这个问题之前,我已经做了很多研究,但是找不到答案。

我正在尝试使用Ruby Selenium + Webdriver自动化网站。 打开新窗口时,脚本挂起出现问题。 我无法专注于新窗口或执行其他任何操作。

这是打开新窗口的代码:

<a id="theField" class="RightTextHeading" onclick="javascript:openTheWindow('someInfo.aspx?type=','300','300');if(window.document.RetValue == '5'){window.parent.LoadinIframe('someStuff.aspx?info=N&amp;Stuff=','Some Data here > Full View','false');}; return false;" href="../MoreStuff/#" style="text-decoration: none;">ClickMe <span class="context"> opens an overlay</span></a>

这是我的红宝石代码:

    require 'rubygems'
require 'watir-webdriver'
require 'selenium-webdriver'

prefs = {
  :download => {
    :prompt_for_download => false,
    :default_directory => '.'
  }
}
client = Selenium::WebDriver::Remote::Http::Default.new
#client.timeout = 600 # seconds - default is 60
client.timeout = 30 # seconds - default is 60
d = Selenium::WebDriver.for :chrome, :prefs => prefs, :http_client => client
b = Watir::Browser.new d

saved_cookies = b.cookies.to_a

b.goto'https://somewebsite.com'
begin
    b.iframe(:id => 'iframeBody').a(:id => "somelink").click
rescue
    puts 'Rescue'
end
sleep 2
puts "before"
#if b.window(:title=>"The new window").exists?
   #puts " Test passed. New window opened!"
#else
   #puts " Test Failed! No window found"
#end
#b.window(:title => /The new window/).use do
#b.window.last.use do
#   puts "here" 
#end
#puts b.window(:title => "The new window").exists?
puts b.windows.size
puts "after"

#b.close

我已经注释掉了我尝试进行这项工作的不同内容。 看起来Ruby只是坐着等待,在打开新窗口之后等待,我不知道如何使它脱离等待状态。

如果我没有开始/救援,代码将停止执​​行,直到超时。 当我尝试营救时,我可以重新获得控制权,但仍然无法专注于新窗口。

任何想法表示赞赏吗? 如果您还有其他问题,请告诉我。

谢谢,-安德烈

我不能完全确定您要如何进行测试,但是在某种程度上,关于如何使用新窗口执行操作的答案已经在您的代码中

#b.window.last.use do

应该

#b.windows.last.use 

要么

@browser.windows.last.use

出现新窗口后,即可开始测试。

根据您的尝试,可能会更改该行应在代码中的位置。 但这将使您能够访问新窗口并与之交互。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM