1

フレームベースのアプリケーション「F」を正常にナビゲートするために、Selenium (Webdriver 2.32、Perl バインディング Selenium::Remote::Driver 0.16 を使用) を使用しています。

<frameset rows=35,*>  // divide page two rows, 35px and remainder high
    <frame name="Header">  // top row is Header
    <frameset cols=182,*>  // divide second row into two columns, 182px and remainder wide
        <frame name="TOC">  // left column is TOC
        <frameset rows=*,0,0>  // right column two hidden rows
            <frame name="Main">  // (top) row is Main content
            <frame name="HiddenFrame">  // hidden stuff
            <frame name="UploadFrame">  // hidden stuff

最初にページに入ると、$drv->switch_to_frame(); $drv->switch_to_frame('TOC');目次に移動するように呼び出します。ここで、メイン コンテンツをリロードするリンクをクリックします。$drv->switch_to_frame(); $drv->switch_to_frame('Main');次に、メイン コンテンツで実行できる場所を呼び出します。

ここで、少し異なるページ "H" をナビゲートする必要がありますが、うまくいきません:

<frameset rows=115,*>  // divide page two rows, 115px and remainder high
    <frame name="Header">  // top row is Header
    <frameset cols=180,*>  // divide second row into two columns, 180px and remainder wide
        <frameset rows=0,*>  // hidden row and remainder of column
            <frame name="DataChannelFrame">  // hidden stuff
            <frame name="TOC">  // left column is TOC
        <frame name="Main">  // (top) row is Main content

この場合、以前と同じナビゲーションを使用しているかどうかに関係なく、Selenium は TOC でクリックするものを見つけることができません。私は実際は TOC にいないのではないかと疑っていますが、自分がどこにいるのかわかりません。言うまでもなく、メインセクションにも入りません。

質問 1: この 2 つのページで、Selenium はどこから始めますか? どのフレームに入っていますか?それは私が信頼できるものですか(文書化され、一貫していますか)?試行錯誤で「F」を回避しましたが、「H」では機能しません。

質問 2: を実行する$drv->switch_to_frame();と、どこまで「上」に移動しますか? 現在のフレームの「親」と見なされるものは何ですか? いつもフレームセットですか?()の代わりに試してみ$drv->switch_to_frame("relative=top");ましたが、「F」でも「H」でもうまくいきませんでした。

質問 3: 名前付きフレームに切り替えるとき、それは現在いる場所から子レベルにある必要がありますか?それとも、自分より下の任意の深さにある必要がありますか? それが子供でな​​ければならない場合、「relative=top」は私をツリーの上位に置きすぎたのでしょうか?

質問 4: メイン (「F」アプリケーション) にいるとき、上記のナビゲーション (1 つ上、名前付きフレームまで) で TOC に正常に到達できます。フレームセット (TOC の兄弟) が Main の親であると思われるのに、なぜそれが機能するのでしょうか?


アップデート

ああああ!一部のページ コーダーが、タグ<b>のスタイルを設定するのではなく、"onClick" を使用したタグを使用するとは誰が想像できたでしょ<a>うか? そのため、目的のフレームに到達してましたが、探していたリンクはそこにはありませんでした.

それにもかかわらず、私は今それを機能させていますが(とにかく、回答してくれた人に感謝します)、switch_to_frame()とswitch_to_frame( 'name')の正式な定義が何であるかについてまだ興味があります. () は「トップ」までずっと移動しますか、それとも 1 レベル上に移動しますか (トップ/デフォルトまでずっと移動しているように見えます)、('name') は検出されるまで任意の数のレベルを下ります名前付きフレーム?(のようです)。() の後に ('name') が続くと、一意の名前のフレームが表示されますか?

4

0 に答える 0