window.open() でアクセスする html ページから html 要素にアクセスしようとしています。
これらは私のhtmlです:
firstpage.html:
<html>
<body>
<script>
function openPage() {
return window.open("secondpage.html")
}
</script>
</body>
</html>
secondpage.html
<html>
<body>
<h1>Hello!</h2>
<p>This is the second page</p>
</body>
</html>
これは私がやっていることです:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("firstpage.html")
html = browser.execute_script("return openPage().document;")
print html
私が期待しているのは、2 ページ目のドキュメント要素への参照です。これは Firefox Web コンソールで動作するようです。スクリプトをテストすると、2 番目のページが開きますが、最初のページがハングしたように見え、しばらくすると次のようなダイアログが表示されます。
「このページのスクリプトがビジーであるか、応答を停止している可能性があります。スクリプトを今すぐ停止するか、スクリプトが完了するかどうかを確認し続けることができます。」
「停止」と「続行」ボタンで。「続行」を押すと、ダイアログが表示され続け、最終的に「停止」を押すと、html python 変数にダイアログの同じテキストが含まれます。
私は何を間違っていますか?
編集: @ e1cheの回答のように、これが正しい方法です:
firstpage.html:
<html>
<body>
<script>
function openPage() {
window.open("secondpage.html", "secondpagewindow")
}
</script>
</body>
</html>
Python コード:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("firstpage.html")
browser.execute_script("openPage()")
browser.switch_to_window("secondpagewindow")
print browser.page_source