2011-06-09 76 views
3

我想用watir-webdriver访问一个网站,但我似乎无法在watir中找到可在Firefox + Firebug中看到的文本框。如何在Watir中找到文本框

我的代码是

require 'rubygems' 
require 'irb/completion' 
require 'watir-webdriver' 
browser = Watir::Browser.new(:firefox) 
browser.goto('http://emersonecologics.com/') 
browser.text_field(:name, "txtEmail").set("[email protected]") 

我得到的错误:

Watir::Exception::UnknownObjectException: unable to locate element, using {:type=>"(any text type)", :name=>"txtEmail", :tag_name=>"input or textarea"} 

但是,我知道有一个名为txtEmail文本框,因为萤火虫显示我

<input id="txtEmail" class="textbox" type="text" tabindex="1" name="txtEmail"> 

当然,正是这个文本框在树的深处。所以,认为我应该在DOM中导航到它,我尝试访问名为'all'的div。

如果我做

>>browser.divs[1].id 
=> "all" 
>> browser.divs[1].tag_name 
=> "div" 

但是,当我试图让一个手柄,它如下,看来我不能找到它。

>>browser.div(:id, "all") 
=> #<Watir::Div:0x101a8fd70 located=false selector={:tag_name=>"div", :id=>"all"}> 

任何人都可以帮助我如何选择页面中的对象吗?

回答

3

看起来它是在一个框架来我也

避免过度指标混乱(在特别是考虑variences如何把不同的Watir的口味是0依据或基于1)我建议按名称识别它。看看这是否会闪现。

browser.frame(:id, "ctrlLoginSSL_ifLogin").text_field(:id, "txtEmail").flash 

Watir Wiki page on frames更多信息上的东西处理框架

里面附言

注意(与网站相关,以及它的使用框架):您也可以向网站开发者提及,某些浏览器(例如chrome)注意到框架(https)的协议不一致,但与外部容器不匹配(HTTP)Chrome的开发者工具是发出以下投诉

Unsafe JavaScript attempt to access frame with URL https://www.emersonecologics.com/User/LoginFrame.aspx?redir=/default.aspx from frame with URL http://emersonecologics.com/ . Domains, protocols and ports must match.

3

您试图访问的元素出现在框架中。我能够与设置电子邮件:

browser.frame(:指数,1).text_field。(:名称, “txtEmail”)集( “[email protected]”)

欲了解更多信息:http://wiki.openqa.org/display/WTR/Frames

+0

这很有趣,因为这是我所得到的: 的Watir ::例外:: UnknownFrameException:无法使用定位帧/ IFRAME {:指数=> 1}。 您使用的是Firefox和watir-webdriver吗? – highBandWidth 2011-06-09 02:34:50

+1

尝试':index => 0'。 – 2011-06-09 08:09:01

+0

@Zeljko,工作,谢谢!虽然它说“(any text type)”,:tag_name =>“input or textarea”,:name =>“txtEmail”}。它不应该说位于=真? – highBandWidth 2011-06-09 12:49:42

相关问题