iframe 内に存在し、他の iframe 内に存在する可能性がある要素を選択しようとしています。
最初に iframe を選択せずに、(Python) Selenium の一部の (子) iframe 内の要素を選択することは可能ですか?何らかの方法で各 iframe を「ループ」して、要素がどこにあるかを確認する方法はありますか?
要素、HTML コンテンツ、および iframe がロードされたばかりの場合にこれを行うにはどうすればよいですか...?
P粉5712335202024-02-27 10:09:53
独自の再帰ファインダーを作成するのは簡単です。申し訳ありませんが、私は Python については知りませんが、Java では次のようになります:
public void findInAllFrames(WebElement e, String targetIdStr) { Listl = 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); } }
P粉7948519752024-02-27 10:03:34
No、Selenium を渡すことはできません。対応する iframe
に切り替える必要はありません。
には、他の <iframes> および
framesets が含まれています。したがって、iframe 内の WebElement を操作する必要がある場合は、次のいずれかの方法で、対応する <iframe> に切り替える必要があります。
## フレーム切り替え方式:
フレーム名別
:Name
iframe に切り替えるための iframe の属性。###例:### driver.switch_to.frame("iframe_name")
フレームID別
:iframe の
ID 属性。これを介してそれに切り替えることができます。 ###例:###
driver.switch_to.frame("iframe_id")フレームごとのインデックス
:ページに 10 個のフレームがあると仮定すると、index を通じて iframe に切り替えることができます。
###例:###driver.switch_to.frame(0) driver.switch_to.frame(1)
ホストに戻ります
:
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 を処理する方法