簡體   English   中英

如何將conftest.py中的webdriver對象合並到Selenium中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM