3

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

Windows 7(32 位)IE 10

红宝石 1.9.3-p392/TDM-32.4.5.2

本地宝石

瓦蒂尔(4.0.2 x86-mingw32)

水经典(3.6.0)

水网驱动程序(0.6.3)

脚本的基本要点:

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

...原始浏览器选项卡上的脚本的第一部分已完成。原始浏览器选项卡生成第二个浏览器选项卡,我需要访问它。我在某处阅读了回复,我需要在附加到浏览器选项卡之前链接到它,但是我很难通过 href、url 或标题识别链接:(其中 'path...' =网址)

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?

4

1 回答 1

8

我建议在选项卡处理上使用 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 
向我们展示网页的代码或网址以获得更详细的结果...
于 2013-04-25T20:05:12.087 回答