2016-09-14 7 views
-2

У меня есть бот, который взаимодействует с сайтом с использованием Splinter и Selenium. Веб-сайт использует Javascript и обновления в режиме реального времени. Бот хорошо работает 90% времени, но из-за случайных событий он иногда вызывает исключение. Мне очень сложно отлаживать эти события, к тому времени, когда я нахожусь в отладчике, сайт изменился.Python: Воспроизводить поведение Splinter/Selenium для тестирования веб-сайта, использующего Javascript

В любом случае, я могу записать данные сайта и воспроизвести его, как с помощью vcrpy? Или я все равно могу записать поведение, чтобы я мог отлаживать и тестировать?

+0

Что вы хотите записать? Помог ли экранный снимок? –

ответ

0

Ближайшая вещь, которую вы можете сделать, это сделать снимки экрана веб-страницы на различных мероприятиях. Вам нужно будет использовать EventFiringWebDriver. Независимо от того, что вы хотите снять с экрана, вызывается функция screen_shot.

from selenium.webdriver.support.events import EventFiringWebDriver 
from selenium.webdriver.support.events import AbstractEventListener 
import os 
import time 
class ScreenShotListener(AbstractEventListener): 
    DIR_NAME = None 
    def screen_shot(self, driver): 
     dir = os.path.curdir 
     unique_filename = str(int(time.time() * 1000)) + ".png" 
     fpath = os.path.join(dir, unique_filename) 
     driver.get_screenshot_as_file(fpath) 

    def before_navigate_to(self, url, driver): 
     pass 

    def after_navigate_to(self, url, driver): 
     pass 

    def before_navigate_back(self, driver): 
     pass 

    def after_navigate_back(self, driver): 
     pass 

    def before_navigate_forward(self, driver): 
     pass 

    def after_navigate_forward(self, driver): 
     pass 

    def before_find(self, by, value, driver): 
     pass 

    def after_find(self, by, value, driver): 
     pass 

    def before_click(self, element, driver): 
     pass 

    def after_click(self, element, driver): 
     pass 

    def before_change_value_of(self, element, driver): 
     pass 

    def after_change_value_of(self, element, driver): 
     pass 

    def before_execute_script(self, script, driver): 
     pass 

    def after_execute_script(self, script, driver): 
     pass 

    def before_close(self, driver): 
     pass 

    def after_close(self, driver): 
     pass 

    def before_quit(self, driver): 
     pass 

    def after_quit(self, driver): 
     pass 

    def on_exception(self, exception, driver): 
     pass 

driver = EventFiringWebDriver(driver, ScreenShotListener()) 
+0

Как быть уверенным, что возникло исключение? Возможно, цепочка безопасности сломана или отсутствует запрос ACK. – dsgdfg

+0

Я не понял ваш вопрос/беспокойство полностью –

+0

Среднее значение, большинство ошибок webbot - значения 'None'/триггеры RPC. Веб-сайты незаконны! Не могу объяснить на общественном месте! – dsgdfg