2013-04-26 2 views
0

Я пытаюсь получить доступ к элементам html с html-страницы, с которой я обращаюсь с помощью window.open().Получение html-элементов другой страницы с помощью window.open()

Это мои 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. Когда я тестирую скрипт, открывается вторая страница, но первая страница, похоже, зависает, и через некоторое время я получаю диалог, говорящий:

«Сценарий на этой странице может быть занят или он может перестать отвечать. может остановить скрипт сейчас, или вы можете продолжать видеть, будет ли скрипт завершен ».

С кнопками «Стоп» и «Продолжить». Нажимая «Продолжить», диалог продолжает появляться, когда я в конечном итоге нажимаю «Стоп», переменная html python содержит тот же текст диалога.

Что я делаю неправильно?

EDIT: Как и в @ e1che ответ, это правильный способ сделать это:

firstpage.html:

<html> 
<body> 
<script> 
function openPage() { 
    window.open("secondpage.html", "secondpagewindow") 
} 
</script> 
</body> 
</html> 

Питон Код:

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

У вас все хорошо,

, но вы не можете переключить драйвер в новое окно.

так сразу после вы browser.execute_script("return openPage().document;")

Вы что-то вроде пишут:

driver.switch_to_window("windowName") 

я вас искать here for more infos and tricks;)

Смежные вопросы