Krematory
Krematory

Reputation: 21

I get 'AttributeError: 'TestClass' object has no attribute 'get'' during the test case execution

I'm trying to create a test case using pytest. I use pytest fixture for my test_case. But every time I execute the code i get an error:

    def test_case(webdriver_definition):
    driver = webdriver_definition
    baseURL = 'https://www.di.fm/'
>   driver.get(baseURL)
E   AttributeError: 'TestClass' object has no attribute 'get'

My test class

class TestClass:

@pytest.fixture(autouse=True)
def webdriver_definition(self):
    driver = webdriver.Chrome(executable_path="D:/Selenium webdriver/chromedriver_win32/chromedriver.exe")
    driver.implicitly_wait(2)
    driver.maximize_window()
    print('=================Driver initialized===================')
    return driver

def test_case(webdriver_definition):
    driver = webdriver_definition
    baseURL = 'https://www.di.fm/'
    driver.get(baseURL)
    home_button = sd.find_element("//nav[@id='side-nav']/ul//span[.='Home']")
    if home_button:
        print(f'Element {home_button} was found\n')
    else:
        print(f'Element {home_button} was not found')
    home_button.click()
    time.sleep(2)
    driver.quit()

Upvotes: 0

Views: 779

Answers (1)

Guy
Guy

Reputation: 50809

This is because Python expect self as first parameter in test_case(), so webdriver_definition was treated as self, which is TestClass

class TestClass:

    @pytest.fixture(autouse=True)
    def webdriver_definition(self):
        driver = webdriver.Chrome(executable_path="D:/Selenium webdriver/chromedriver_win32/chromedriver.exe")
        # ...
        return driver

    def test_case(self, webdriver_definition):
        driver = webdriver_definition
        baseURL = 'https://www.di.fm/'
        driver.get(baseURL)

Upvotes: 1

Related Questions