[英]pytest-bdd--> Selenium Webdriver python AttributeError: 'NoneType' object has no attribute 'execute_script' calling pytest fixture from conftest.py
[英]How to incorporate webdriver object from conftest.py in selenium
我有一個conftest.py,它將初始化firefox實例並打開頁面。 但是,只要我想通過繼承該固定裝置在我的test_functional.py中使用。 我得到一個webdriver = None錯誤。 我不確定如何將conftest.py中的值傳遞給驅動程序變量。 有人可以幫忙嗎? 提前致謝。
#conftest.py
@pytest.fixture
def webdriver(request):
from selenium import webdriver
request.instance.driver = webdriver.Firefox()
request.instance.driver.get("http://localhost:8443/")
request.addfinalizer(request.instance.driver.quit)`
test_functional.py看起來像:
# test_functional.py
import pytest
@pytest.mark.usefixtures("webdriver")
class TestFunction:
def test_username(self, webdriver):
self.driver = webdriver
elem = driver.find_element_by_id("username")
s = "pass"
print(s)`
我得到的錯誤是:
self = <test_functional.TestHighchar object at 0x03E30590>, **webdriver = None**
def test_series(self, webdriver):
self.driver = webdriver
> elem = driver.find_element_by_id("username")
E NameError: name 'driver' is not defined
test_functional.py:13: NameError
========================== 1 failed in 19.95 seconds ==========================
pytest固定裝置的值是其構造函數的返回值 。 因為您的webdriver
構造函數沒有返回任何內容,所以您的測試函數什么也沒有收到。
只需從夾具構造函數返回實例化的驅動程序,它將被傳遞給您的測試函數:
@pytest.fixture
def webdriver(request):
from selenium import webdriver
driver = webdriver.Firefox()
request.addfinalizer(driver.quit)
return driver
PS不需要使用@pytest.mark.usefixtures("webdriver")
。 由於webdriver
參數與燈具名稱匹配,因此該燈具將自動構建並提供給您的測試功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.