0

该网页具有嵌套的框架结构。框架FCCBMain嵌套在框架中Main。我可以通过这种方式访问​​它:

 browser.frame(:id => "FCCBMain").frames[0]
 => #<Watir::Frame:0x504e155578d49f34 located=false selector={:index=>0}>
 browser.frame(:id => "FCCBMain").frames[0].id
 => "MainLeft"

但不是这样:

 brwoser.frame(:id => "FCCBMain").frame(:id => "MainLeft").id
 Selenium::WebDriver::Error::StaleElementReferenceError: Element belongs to a different frame than the current one - switch to its containing frame to use it
from [remote server] resource://fxdriver/modules/web_element_cache.js:5634:in `unknown'
from [remote server] file:///tmp/webdriver-profile20120816-21551-1a8xyvv/extensions/fxdriver@googlecode.com/components/driver_component.js:5329:in `unknown'
from [remote server] file:///tmp/webdriver-profile20120816-21551-1a8xyvv/extensions/fxdriver@googlecode.com/components/driver_component.js:6623:in `unknown'
from [remote server] file:///tmp/webdriver-profile20120816-21551-1a8xyvv/extensions/fxdriver@googlecode.com/components/command_processor.js:9924:in `unknown'
 ...

我认为这两种方式非常相似。为什么后面的不起作用?

(如果有帮助,是我正在处理的网页)

4

1 回答 1

2

首先,我认为您的“brwoser.frame”有错字

其次,如果您要使用链访问框架,则必须在路径 IE 中包含所有框架和框架集: browser.frame(:id => "FCCBMain").frameset.frameset.frame(:id => "MainLeft “)。ID

您的第二个解决方案不起作用的原因是因为它正在寻找 frame(FCCBMain) 的直接子级以具有“MainLeft”的 id。Frame(FCCBMain) 只有一个框架集子,框架集没有 ID。如果框架集的 ID 为“MainLeft”并且是框架(不是框架集),那么 browser.frame(:id => "FCCBMain").frame(:id => "MainLeft").id 行将工作。

于 2012-08-16T12:16:24.993 回答