0

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
4

1 に答える 1

0

あなたはうまくやっている、

しかし、ドライバーを新しいウィンドウに切り替えるのを逃します。

あなたがいる直後にbrowser.execute_script("return openPage().document;")

あなたは次のように書きます:

driver.switch_to_window("windowName")

ここで詳細情報とコツを検索してみましょう;)

于 2013-04-26T18:28:07.327 に答える