0

Webページはネストされたフレーム構造を持っています。フレームFCCBMainはframeにネストされています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'
 ...

この2つの方法は非常に似ていると思いました。なぜ後で動作しないのですか?

(それが助けになるなら、これが私が取り組んでいるウェブページです

4

1 に答える 1

2

まず、「brwoser.frame」のタイプミスがあると思います

次に、チェーンを使用してフレームにアクセスする場合は、パスIEにすべてのフレームとフレームセットを含める必要があります。browser.frame(:id => "FCCBMain")。frameset.frameset.frame(:id => "MainLeft ").id

2番目のソリューションが機能しなかった理由は、「MainLeft」のIDを持つframe(FCCBMain)の直接の子を探していたためです。フレーム(FCCBMain)にはフレームセットの子のみがあり、フレームセットにはIDがありません。フレームセットのIDが"MainLeft"で、フレーム(フレームセットではない)の場合、browser.frame(:id => "FCCBMain")。frame(:id => "MainLeft")。idという行は次のようになります。仕事。

于 2012-08-16T12:16:24.993 に答える