iframe 内に存在し、他の iframe 内に存在する可能性がある要素を選択しようとしています。
最初に iframe を選択せずに、(Python) Selenium の一部の (子) iframe 内の要素を選択することは可能ですか?何らかの方法で各 iframe を「ループ」して、要素がどこにあるかを確認する方法はありますか?
要素、HTML コンテンツ、および iframe がロードされたばかりの場合にこれを行うにはどうすればよいですか...?
独自の再帰ファインダーを作成するのは簡単です。申し訳ありませんが、私は Python については知りませんが、Java では次のようになります:
public void findInAllFrames(WebElement e, String targetIdStr) { List l = e.findElements(By.tagName("iframe")); for(int inx=0; inx ターゲット = l.get(inx).findElements(By.id(targetIdStr)); if(targets.size()>0) { // ターゲットに対して何かを行う } findInAllFrames(l.get(inx), targetIdStr); } }
No、Selenium を渡すことはできません。対応する iframe に切り替える必要はありません。
iframe
には、他の <iframes> および framesets が含まれています。したがって、iframe 内の WebElement を操作する必要がある場合は、次のいずれかの方法で、対応する <iframe> に切り替える必要があります。 ## フレーム切り替え方式:
および
に切り替える必要があります。
フレーム名別
Name
###例:### driver.switch_to.frame("iframe_name")
フレームID別
ID 属性。これを介してそれに切り替えることができます。 ###例:###
フレームごとのインデックス
###例:###
ホストに戻ります
default_content()
または
parent_frame() を使用してメイン フレームに戻すことができます
driver.switch_to.default_content() driver.switch_to.parent_frame() フレームを切り替えるより良い方法: フレームを切り替えるより良い方法は、expected_conditions
パス フレーム ID: WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.ID,"id_of_iframe")) 投稿者 フレーム名
FrameworkXpath
フレーム CSS
これに関する詳細な説明は、次の場所にあります。
iframe 下の #document を処理する方法
独自の再帰ファインダーを作成するのは簡単です。申し訳ありませんが、私は Python については知りませんが、Java では次のようになります:
No、Selenium を渡すことはできません。対応する
###理由:###iframe
に切り替える必要はありません。ページをロードするとき、Selenium のフォーカスはデフォルトで上部ウィンドウに残ります。
トップ ウィンドウには、他の <iframes>
および
framesets が含まれています。したがって、iframe 内の WebElement を操作する必要がある場合は、次のいずれかの方法で、対応する <iframe>に切り替える必要があります。
## フレーム切り替え方式:フレームは 3 つの方法で切り替えることができます。
フレーム名別
:Name
iframe に切り替えるための iframe の属性。###例:### driver.switch_to.frame("iframe_name")
フレームID別
: iframe のID 属性。これを介してそれに切り替えることができます。 ###例:###
driver.switch_to.frame("iframe_id")フレームごとのインデックス
:ホストに戻ります
:default_content()
parent_frame() を使用してメイン フレームに戻すことができます
###例:###driver.switch_to.default_content() driver.switch_to.parent_frame()
フレームを切り替えるより良い方法: フレームを切り替えるより良い方法は、
を frame_to_be_available_and_switch_to_it に設定してexpected_conditions
WebDriverWait# を引き起こすことです
## 期待されるフレームワークの可用性を取得するには、次のようにします:パス フレーム ID:
投稿者 フレーム名
iframe 下の #document を処理する方法