0

私はフレームセットとフレームを持つWebページと対話するためにPython + Seleniumを使用しています。私はprint driver.page_sourceようかなっ行う際ブラウザはフレームをサポートしていません例外

はしかし、私はこのエラーを取得する:

<frameset cols="*" border="0" framespacing="0" rows="118,*" frameborder="0" onbeforeunload="unload()"> 
    <frame src="/xxx/frameset/xxx.html" name="ENTETE_WIN" id="ENTETE_WIN" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" /> 
    <frame src="/xxx/frameset/bodyFrame.html" name="BODY_WIN" id="BODY_WIN" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" /> 
    <noframes> 
     &lt;body bgcolor="#FFFFFF"&gt; 
     This browser does not support frames. 
     &lt;/body&gt; 
    </noframes> 
</frameset> 

マイセレンのバージョンは2.53.2です。私はFirefoxとChromeでドライバ2.21を試しました。

+0

どのブラウザを使用しているか、バージョンなど詳細をご記入ください。 –

+0

@MichaelMarkidis申し訳ありませんが、私は自分の質問を編集していますが、誤って投稿されました。 – user2789928

答えて

1

私があなたの質問を正しく理解していれば、何の誤りもありません。どのようなdriver.page_sourceあなたのページの実際のHTMLを示しています。あなたのケースでは、ページには2つのフレームと、<noframes>と呼ばれる追加のセクションが含まれています。このセクションは、ブラウザがフレームをサポートしていない場合に表示されます。だからあなたが見ているのは、あなたをターゲットとしたエラーではありません。

私はあなたのオートメーションをお勧めします。<noframes>セクション全体を一切無視してください。非常に古いブラウザ(IE 2など)のみがフレームをサポートしていません(フレームhereの詳細説明を参照)。

正しく理解すれば、要素がフレーム内にあるため、要素を選択できないという問題があります。さて、Seleniumはフレームを処理するための関数群を提供しています。 Python上のSeleniumについてはthisを参照してください。

他の要素を選択する前に、対応するフレームを選択して切り替える必要があります。たとえば:

driver.switch_to_default_content() 
driver.switch_to_frame("ENTETE_WIN") 

左フレームに切り替わります(最初の文は、最初に「メイン」ウィンドウに表示されます)。または

driver.switch_to_default_content() 
driver.switch_to_frame("BODY_WIN") 

右フレームに切り替える。

他のすべてのHTML要素はこれらのフレーム内にあるため、通常のxpath、css、その他のセレクタを使用して選択できます。

+0

ありがとうございます!あなたは私の問題を正確に解決しました!! – user2789928

関連する問題