Can't see failed screenshot of testcases in selenium python

112 Views Asked by At

I tried to save screenshot of failure testcase in selenium python project by using driver.save_screenshot() method. I specified my folder as parameter. But can't see failed screenshot in my project. Here is the code.

self.driver.save_screenshot(".//Screenshots//"+"test_homePageTitle.png")

Here is the absolute path - /Users/cherry/Documents/Selenium pj/nopcommerceApp2/Screenshots

I want to save failed testcase as screenshot in my specific folder

Here is the full code:

import time
from pageObjects.loginPage import LoginPage
from utilities.readProperties import ReadConfig


class Test_001_Login:
    baseURL = ReadConfig.getApplicationURL()
    username = ReadConfig.getUseremail()
    password = ReadConfig.getPassword()

    def test_homePageTitle(self, setup):
        self.driver = setup
        self.driver.get(self.baseURL)
        act_title = self.driver.title
        self.driver.close()
        if act_title == "Your store. Login":
            assert True
        else:
            time.sleep(5)
            # self.driver.save_screenshot("./nopcommerceApp2/Screenshots" + "test_homePageTitle.png")
            self.driver.save_screenshots('.//Screenshots//"+"test_homePageTitle.png')
            self.driver.close()
            assert False

    def test_login(self, setup):
        self.driver = setup
        self.driver.get(self.baseURL)
        time.sleep(10)
        self.lp = LoginPage(self.driver)
        self.lp.setUserName(self.username)
        self.lp.setPassword(self.password)
        self.lp.clickLogin()
        act_title = self.driver.title
        self.driver.close()
        if act_title == "Dashboard / nopCommerce administration":
            assert True
        else:
          time.sleep(5)
            self.driver.save_screenshot(".\\Screenshots\\" + "test_login.png")
            self.driver.close()
            assert False
1

There are 1 best solutions below

0
Mahsum Akbas On

it is not a sustainable way. Instead of it, you can use such reporting plugin.

I may sugges you pytest-html

pip install pytest-html

Then add foolowing code into your conftest.py

# to add screenshot for failed steps
@mark.hookwrapper
def pytest_runtest_makereport(item, call):
    pytest_html = item.config.pluginmanager.getplugin('html')
    outcome = yield
    report = outcome.get_result()
    extra = getattr(report, 'extra', [])
    if report.when == 'call':
        xfail_state = hasattr(report, 'wasxfail')
        if (report.skipped and xfail_state) or (report.failed and not xfail_state):
            mydriver = item.funcargs['driver']
            screenshot = mydriver.get_screenshot_as_base64()
            extra.append(pytest_html.extras.image(screenshot, ''))
    report.extra = extra