问题描述
我已经在页面对象模型中使用unittest和pytest实现了selenium python框架。 我使用oneTimeSetup方法创建了一个conftest.py文件,该文件将初始化webdriver,然后所有我的测试文件都将使用它。以下是我使用的方法。我在下面创建了这样的webdriver工厂
WebDriverFactory.py
:
from selenium import webdriver
class WebDriverFactory():
def __init__(self,browser):
self.browser = browser
def get_browser_instance(self):
if self.browser == "FF":
driver = webdriver.Firefox()
elif self.browser == "Chrome":
driver = webdriver.Chrome()
elif self.browser == "IE":
driver = webdriver.Ie()
else:
driver = webdriver.Chrome()
baseUrl = "http://live.demoguru99.com/index.PHP/"
driver.delete_all_cookies()
driver.maximize_window()
driver.implicitly_wait(5)
driver.get(baseUrl)
return driver
conftest.py
:
import pytest
from base.WebDriverFactory import WebDriverFactory
def pytest_addoption(parser):
parser.addoption("--browser")
@pytest.fixture(scope="session")
def browser(request):
return request.config.getoption("--browser")
@pytest.fixture(scope="session")
def oneTimeSetup(request,browser):
print("This is one time setup")
wdf = WebDriverFactory(browser)
driver = wdf.get_browser_instance()
if request.cls is not None:
request.cls.driver = driver
yield driver
driver.quit()
下面是我的测试文件:
from pages.mobile_page.mobile_page import MobilePage
from utilities.mark_test_status import MarkTestStatus
import unittest
import pytest
@pytest.mark.usefixtures("oneTimeSetup")
class TestMobile(unittest.TestCase):
@pytest.fixture(autouse=True)
def classObject(self,oneTimeSetup):
self.mb = MobilePage(self.driver)
self.ts = MarkTestStatus(self.driver)
def test_Mobile(self):
result = self.mb.mobile()
self.ts.finalMark(testcase="Mobile Sort By test",result=result,resultMessage="Testing Mobile SOrt functionality")
如果我在conftest.py中将oneTimeSetup的范围更改为“ class”,则测试运行良好。但是,当我添加更多测试时,我希望在单个webdriver会话中运行所有mt测试。
详细信息: Selenium Python v 3.1.41.0 铬86.0.4240.111 pytest 6.0.1
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)