t.me/atinfo_chat Telegram группа по автоматизации тестирования

[WD + python] Как сделать скриншот

screenshot
Теги: #<Tag:0x00007f9c486463d8>

(Alexander Petrovich) #1

Привет. 

Есть у вэбдрайвера такой метод, как  browser.save_screenshot('screenie.png')

Внимание, вопрос! Как заставить его делать скриншот при ЛЮБОМ эксепшене?

 


(re1ax) #2

Может стоит ручками прописывать все возможные экскпшены ?


(Vol) #3

знаю как сделать при ТС фейл - нужно сделай свой листенер:

 

public class MyListener extends TestListenerAdapter {

@Override
public void onTestFailure(ITestResult tr) {

     blablabla....

}

}

 

Далее подключать где нужно...


(Mykhailo Poliarush) #4

а с помощью какого python фреймворка вы запускаете ваши тесты?


(Mykhailo Poliarush) #5

да, для Java и TestNG это подходит отлично, а вот для Python не сильно :)


(Mykhailo Poliarush) #6

например, если использовать py.test, то нужно работать с хуками

http://pytest.org/latest/plugins.html#generic-runtest-hooks

и классом TestReport

http://pytest.org/latest/plugins.html#_pytest.runner.TestReport


(Alexander Petrovich) #7

Вот именно с пай.тест и работаю. Спасибо, будем читать 


(Mykhailo Poliarush) #8

плюс забыл еще добавить что есть такой класс AbstractEventListener, который можно перегрузить метод on_exception, что наверное более правильнее и проще :)

 

class AbstractEventListener(object):
    """
    Event listener must subclass and implement this fully or partially
    """
 
   
    def on_exception(self, exception, driver):  pass

Например, вот как это можно использовать 

 

from selenium.webdriver import Firefox
            from selenium.webdriver.support.events import EventFiringWebDriver, AbstractEventListener
           
            class MyListener(AbstractEventListener):
                def before_navigate_to(self, url, driver):
                    print "Before navigate to %s" % url
                def after_navigate_to(self, url, driver):
                    print "After navigate to %s" % url
           
            driver = Firefox()
            ef_driver = EventFiringWebDriver(driver, MyListener())
            ef_driver.get("http://www.google.co.in/")