2015-01-23 3 views
2

Я использую Python с Selenium 2.44. Когда тест выходит из строя, я не могу просто раскомментировать весь код перед сбоем при его отладке, потому что драйвер не будет объявлен для браузера. Поэтому, когда я пытаюсь что-то исправить, мне всегда нужно открыть новый браузер в тестовом примере. Это довольно ... медленно, так как я должен войти в систему, что добавляет дополнительные 30 секунд (не разрушительно, но раздражает). Я хочу знать, есть ли способ для меня просто продолжить сеанс или сделать что-то, что позволяет мне начать тест на полпути (так что, если у меня уже будет открыта веб-страница, я сразу же начну нажимать на вещи, а не открывать новую браузер). Это возможно?Python with selenium: повторить предыдущий браузер

Например, если я что-то вдоль линий:

driver = webdriver.Firefox() 
driver.get("google.com") 
driver.find_element_by_xpath("//input[@id='gbqfq']").send_keys("cats" + Keys.RETURN) 

Это должно открыть Firefox, перейдите к Google, и поиск для кошек. Притворись, что есть тонна вещей, которые тебе нужно сделать, прежде чем вы сможете сделать это на странице Google. Теперь, если бы он потерпел неудачу при поиске кошек, единственный способ, с помощью которого я смог бы проверить, исправил ли я код, чтобы перезапустить тест (webdriver.Firefox() откроет новый браузер). Вместо этого, предполагая, что у меня все еще будет открытая версия Google, я бы хотел, чтобы тест селена начинался с предыдущего браузера и страницы Google (поэтому первым шагом в коде будет send_keys("cats")). Это возможно?

Я думаю, что это был подобный вопрос, но он не получил галочка, как ответил: How to resume browser session or use existing browser window with Selenium-Python?

Это один также кажется похожи, только относящиеся к Java: How do I rerun Selenium 2.0 (webdriver) tests on the same browser?

Спасибо.

ответ

1

Посмотрите в PDB: https://docs.python.org/2/library/pdb.html

Размещение этого в коде будет остановить прогрессирование испытания, пока вы не сказать ему, чтобы продолжить в своей оболочке.

Использование кода Snippit:

from pdb import set_trace 
driver = webdriver.Firefox() 
driver.get("google.com") 
set_trace() 
driver.find_element_by_xpath("//input[@id='gbqfq']").send_keys("cats" + Keys.RETURN) 

остановит выполнение Вашего после получения URL, позволяют повозиться, а затем продолжить от того, где тест кончили.

В качестве альтернативы, при отладке вы можете просто удалить инструкцию driver.quit(), где бы она ни находилась, что будет держать браузер открытым, когда ваше утверждение не удалось. Но если вы используете инфраструктуру Django с клиентом LiveTestServer, у вас не будет доступа для дальнейшего просмотра сайта. pdb позволит вам сохранить тестовый сервер активным.

+0

что ... есть ... удивительный ... как я не знаю об этом LOL спасибо! – user2869231

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