2016-09-14 1 views
-2

J'ai un bot qui interagit avec un site Web en utilisant Splinter et Selenium. Le site utilise Javascript et mises à jour en temps réel. Le robot fonctionne bien 90% du temps, mais en raison d'événements aléatoires, il peut parfois déclencher une exception. Il m'est très difficile de déboguer ces événements, au moment où je suis dans le débogueur, le site a changé.Python: Reproduire Comportement Splinter/Selenium pour tester un site Web qui utilise Javascript

Y at-il de toute façon que je puisse enregistrer les données du site et les lire, comme avec vcrpy? Ou y at-il de toute façon que je peux enregistrer le comportement afin que je puisse déboguer et tester?

+0

Que voulez-vous enregistrer? Est-ce que l'aide d'écran pourrait aider –

Répondre

0

La chose la plus proche que vous pouvez faire est de prendre des captures d'écran de la page Web sur divers événements. Vous devrez utiliser EventFiringWebDriver. Quel que soit ce que vous voulez prendre une capture d'écran appelez screen_shot fonction là.

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

Comment être sûr qu'une exception a été soulevée? Peut-être une chaîne de sécurité cassée ou une requête ACK manquante. – dsgdfg

+0

Je n'ai pas compris complètement votre question/problème –

+0

Moyenne, la plupart des erreurs webbot sont des valeurs 'None'/triggers RPC. Les robots Web sont illégaux! Impossible d'expliquer sur la zone publique! – dsgdfg