どのフレームにあるかに関係なく、Selenium で HTML 要素を選択する方法
P粉073857911
P粉073857911 2024-02-26 11:11:52
0
2
435

iframe 内に存在し、他の iframe 内に存在する可能性がある要素を選択しようとしています。

最初に iframe を選択せず​​に、(Python) Selenium の一部の (子) iframe 内の要素を選択することは可能ですか?何らかの方法で各 iframe を「ループ」して、要素がどこにあるかを確認する方法はありますか?

要素、HTML コンテンツ、および iframe がロードされたばかりの場合にこれを行うにはどうすればよいですか...?

P粉073857911
P粉073857911

全員に返信(2)
P粉571233520

独自の再帰ファインダーを作成するのは簡単です。申し訳ありませんが、私は 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);
    }
}
いいねを押す +0
P粉794851975

NoSelenium を渡すことはできません。対応する 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")

フレームごとのインデックス

:

ページに 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

frame_to_be_available_and_switch_to_it
 に設定して 

WebDriverWait# を引き起こすことです

## 期待されるフレームワークの可用性を取得するには、次のようにします:

パス フレーム ID: WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.ID,"id_of_iframe")) 投稿者 フレーム名

:
  • WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"name_of_iframe")))

    経由
    FrameworkXpath
    :
  • WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"xpath_of_iframe")))

     フレーム CSS 
    経由:
  • WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"css_of_iframe")))

    ###参照する###
     これに関する詳細な説明は、次の場所にあります。 
  • iframe 下の #document を処理する方法

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート