1

現在、問題があります-現在のフレームから親に切り替えたいです。アプリケーションには多くの内部フレームがあるため、driver.switchTo().defaultContent() を使用することはできません。この議論では、考えられる解決策が提案されています - あなたが訪れたすべてのフレームを覚えていて、それらを上から

driver.switchTo().defaultContent()

主な問題は、私のアプリケーションでは、時々、xpath および他のロケーターによって検出されたフレームへの切り替えを使用することを余儀なくされたことです。WebElement による切り替えを使用します。上記の説明で既に述べたように、切り替えた後は、配置されているすべての WebElement が無効になり、切り替えに使用できなくなります。したがって、フレーム内でこの要素を再度見つける方法が必要です。いくつかの js 呼び出し (ie (WebElement)executeScript("window.frames[i]").equals(myWebElement)) を実行しているこのフレーム要素のインデックスを見つけることはできますが、一部のフレームがページから削除されるとインデックスが変更される可能性があるため、そうではありません。フレーム名と ID を見つけようとすることはできますが、指定されていない可能性があります。

だから私は唯一の可能な解決策を見ます - 現在選択されている親のフレームにいくつかの属性を設定します - 例の属性が値trueでアクティブです。また、フレームを切り替えることができるすべてのメソッドでこれを実行できるはずです(3つ存在します)。すべてのメソッドで、フレームを表す WebElement を受け取ることができますが、私が知る限り、属性値を変更するには、いくつかの js コードを実行する必要があります。したがって、問題はjsで現在のWebElementを見つける方法です。

これをすべて読んでくれてありがとう。

4

2 に答える 2

2

上のこのコード スニペットを見てください。これが、スクリプトを実行するための引数として要素を渡し、引数 [0] を使用して js で参照することで、js で現在の要素を見つけることができる最良の方法です。

WebElement element = driver.findElement(By.id("foo"));
String contents = (String)((JavascriptExecutor)driver).executeScript("return arguments[0].innerHTML;", element); 
于 2012-10-02T14:25:06.860 に答える
0

JavaScriptを使用してカスタムロジックを実装する必要があります

要素に ID がある場合は、javascript で利用可能な findElementById() メソッドを使用できます。それ以外の場合は、findElementsByName() を使用してから、配列を反復処理し、他のプロパティと一致させて要素を絞り込みます。

于 2012-09-30T20:31:17.193 に答える