Reputation: 21
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
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