1

PageObjects を使用して Selenium Webdriver でテストスイートを作成していますが、ドライバーが別のフレームを指していても、WebElement 参照インスタンスが機能するかどうかは疑問です。私がテストを書いているサイトにはたくさんのフレームがあり (フレームの使用をやめることはできません :-))、すべてのサイトの 1 つのフレーム要素がトップバーです。そのフレーム用に、それを含む他の PageObjects から初期化して使用できる単一の PageObject を作成したいと思います。

しかし、ドライバーが別のフレームに移動したときに WebElements を使用できるかどうかは疑問です。

例:

  1. 新しい HomePage PageObject の作成と初期化
  2. SwitchTo(frame1)。SwitchTo(frame2)
  3. コンストラクターから、上記のドライバーの場所を使用して要素を初期化/インスタンス化する TopBar オブジェクトを作成します。elmTopBar と呼ばれるその PageObject/frame 内の WebElement への参照があります。
  4. HomePage では、ドライバーはそのフレームから離れて (フレーム 0 に戻る) 他の作業を行います。

  5. elmTopBar への「古い」参照は、このドライバーの場所 (同じドライバー オブジェクト) から引き続き実行できますか、それとも、ドライバーが毎回 frame2 を指している場合にのみ機能します (つまり、HomePage で何かが必要になるたびに、TopBar オブジェクトを切り替え + 初期化する必要があります)。トップバー)?

別のフレームから要素検索を行うと、他のフレームのオブジェクトが見つからないことはわかっていますが、私の質問は、 WebElement への参照を作成/保存するときに、 switchTo(frameX ) ドライバーと一緒に。

事前にt​​hx!

4

1 に答える 1

2

いいえ。毎回オブジェクトを「再検索」する必要があります。Selenium はおそらく、オブジェクトがもはやキャッシュにない、または DOM にアタッチされていないと文句を言うでしょう。

于 2012-12-18T09:17:46.080 に答える