我正在尝试从我使用window.open()访问的html页面访问html元素。
这些是我的htmls:
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
我期望得到的是对第二页的文档元素的引用。这似乎适用于Firefox Web控制台。当我测试脚本时,第二页打开,但第一页似乎挂起,过了一会儿我得到一个对话框说:
“此页面上的脚本可能正忙,或者可能已停止响应。您可以立即停止脚本,也可以继续查看脚本是否完成。”
使用“停止”和“继续”按钮。按“继续”对话框会一直显示,当我最终按“停止”时,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
答案 0 :(得分:0)
你做得很好,
但您错过了将驱动程序切换到新窗口。
就在您browser.execute_script("return openPage().document;")
您写的内容如下:
driver.switch_to_window("windowName")