ruby - 如何访问新的浏览器选项卡

标签 ruby watir

Watir 菜鸟在这里。我正在尝试连接并操作新生成的浏览器选项卡,但对如何识别新选项卡有点困惑。这是我所拥有的:

Windows 7(32 位)IE 10

ruby 1.9.3-p392/TDM-32.4.5.2

本地 gem

watir (4.0.2 x86-mingw32)

watir-经典 (3.6.0)

watir-webdriver (0.6.3)

脚本的基本要点:

require 'rubygems'
require 'Watir'
ie=Watir::Browser.new

... 原始浏览器选项卡上的脚本的第一部分已完成。原始浏览器选项卡生成第二个浏览器选项卡,我需要访问它。 我在某个地方读到一个响应,我需要在附加到它之前链接到浏览器选项卡,但我很难通过 href、url 或标题识别链接:(其中“路径...”=网址)

ie.link(:href, "path...").click

--未捕获的异常:无法定位元素,使用 {:tag_name=>["a"], :href=>"path..."

ie.link(:url, "path...").click

--未捕获的异常:无法定位元素,使用 {:tag_name=>["a"], :url=>"path..."

ie.a(:href, "path...").click

--无法定位元素,使用{:tag_name=>["a"], :url=>"path..."

但是,如果我尝试以下操作:

ie2 = Watir::IE.attach(:title, 'New_Tab_Title')

--“无法找到标题为 New_Tab_Title 的窗口”

首先,如何指向新的 url 或浏览器选项卡?如果我在第二个选项卡打开后执行 ie.close,第一个选项卡关闭,很明显我不认识这个新选项卡(即使它看起来有焦点)。

其次,我假设我需要先连接到链接/url,然后附加到浏览器选项卡,然后我才能继续填充字段,这是否正确?

最后,是否有一个我可以使用的短名称 url,因为生成的 url 很长,还是我们需要插入整个 url?

最佳答案

我建议在选项卡处理上使用 watir-webdriver:

尝试以下操作

MEDBEDbs-iMac:~ medbedb$ irb
1.9.3p392 :001 > require 'watir-webdriver'
 => true 
1.9.3p392 :002 > b = Watir::Browser.new :chrome
 => #<Watir::Browser:0x..f87e94a30e87e1e60 url="about:blank" title="about:blank"> 
1.9.3p392 :003 > b.goto "http://www.w3schools.com/html/html_links.asp"
 => "http://www.w3schools.com/html/html_links.asp" 
1.9.3p392 :004 > b.title
 => "HTML Links" 

此处在新标签页中打开一个新窗口。

1.9.3p392 :005 > b.a(:text, 'HTML links').click
 => [] 
1.9.3p392 :006 > b.windows.count
 => 2 

但 watir-webdriving 仍在处理上一个页面..

1.9.3p392 :007 > b.title
 => "HTML Links" 

切换到最近打开的标签。

1.9.3p392 :008 > b.windows.last.use
 => #<Watir::Window:0x..fd949289f2b083062 located=true> 
1.9.3p392 :009 > b.title
 => "Tryit Editor v1.7" 

在这里您可以在新标签页中执行任何您需要的操作。

1.9.3p392 :010 > b.windows.last.close
 => #<Watir::Window:0x..fd949289f2b083062 located=true> 

关闭新标签后,watir 将切换回初始标签。

1.9.3p392 :011 > b.title
 => "HTML Links" 
1.9.3p392 :012 > b.close
 => true 
向我们展示网页代码或网址以获得更详细的结果...

关于ruby - 如何访问新的浏览器选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16222446/

相关文章:

rspec - watir-rspec : watir or watir-webdriver?

ruby - 如何将 IRB 输入保存到 .rb 文件?

watir webdriver 获取嵌入文件的 src

javascript - 提交表单后 Watir 文本框输入不持久(重置为以前的文本框输入)

ruby - 如何设计和构建使用Actor的程序

ruby-on-rails - Rails params如何从字符串中解析散列

ruby-on-rails - RSpec 请求警告 - Rails 5.1 升级 - Assets 管道中不存在 Assets

watir - Watir 能识别 META HTML 元素吗?

ruby - 无法在 ruby​​ 2.2.1 中安装 json 1.8.3

ruby-on-rails - Rails 解析 csv 分隔符¦