繁体   English   中英

Python:重现 Splinter/Selenium 行为以测试使用 Javascript 的网站

[英]Python: Reproduce Splinter/ Selenium Behaviour for Testing a Website That Uses Javascript

我有一个使用 Splinter 和 Selenium 与网站交互的机器人。 该网站使用 Javascript 并实时更新。 机器人在 90% 的时间内运行良好,但由于随机事件,它有时会引发异常。 我很难调试这些事件,当我进入调试器时,网站已经改变了。

无论如何我可以记录网站数据并播放它,就像使用vcrpy一样? 或者无论如何我可以记录行为以便我可以调试和测试?

您可以做的最接近的事情是对各种事件的网页进行屏幕截图。 您将不得不使用 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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM