我使用unittest和pytest以及页面对象模型实现了selenium python框架。我创建了一个conftest。使用oneTimeSetup方法的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")
在cmd中运行测试时,我得到以下错误。cmd
如果我在conftest中将oneTimeSetup的范围更改为“class”。py,测试运行正常。但当我添加更多测试时,我希望在单个webdriver会话中运行所有mt测试。
详细信息:Selenium Python v 3.1.41.0 Chrome 86.0.4240.111 pytest 6.0.1
oneTimeSetup fixture是会话级别,会话级别请求参数没有cls属性。而不是访问请求。像这样的cls
if request.cls is not None:
request.cls.driver = driver
使用request.node.items和setattr的个别项目像这样
session = request.node
for item in session.items:
cls = item.getparent(pytest.Class)
setattr(cls.obj, "driver", driver)
我想在我的应用程序中实现会话。这是我的代码: 但它返回错误: C:\User\User\Desktop\manajemen-event-master\node_modules\express\lib\application.js:210抛出新的TypeError('app.use()需要中间件函数');^ TypeError:_extensions()需要中间件函数在EventE_load(C:\
我有一个方法要调用一个存储函数。我希望它异步地完成它的工作。这就是我所拥有的,但似乎.doWork()从未启动,因为当我调用<code>getDao时。deleteAll(),存储的函数不运行。 我看到记录器已经记录了,但它从未到达为什么会发生这种情况?
在我的Vaadin应用程序中,当Vaadin在“session Timeout”消息之后没有使会话无效时,我遇到了一个问题。收到此消息后,用户有时可以单击链接或刷新页面,并继续工作,就像他们仍在登录一样。我使用以下参数: Last参数(session-timeout)也在context.xml(session-timeout=900)和web.xml(session-config/session-
我最近安装了一个用于开发测试的selenium网格环境。然而,我们面临以下错误: 转发新会话时出错,无法找到:功能{browserName:chrome,chromeOptions:{args:[--headless,--no sandbox],二进制:,首选项:{plugins.always\u open\u pdf\u externally:true},w3c:false},loggingPr
我的selenium配置有问题。我正在尝试在iOS和Android上自动化Selenium测试。 iOS测试独立于iOS驱动程序正常运行。Android测试也在独立正常运行。 但是当我想运行iOS和Android时,我遇到了问题! 对于我的Android测试,我正在运行这个命令,一切都很好: 但是,当我想要集成iOS测试时,我会按照以下指南更改此命令的端口:http://selendroid.io
问题内容: 我从这里选择了最新的2.45.0 。遵循文档并使用以下命令启动集线器 并且,文件内容为: 而且,唯一的 到目前为止,一切看起来都很不错。在这里注册后,请查看控制台的屏幕截图 而且,当我尝试通过以下方式开始测试时,问题就开始了: 而且,它抛出: WebDriver.dll中发生类型’System.InvalidOperationException’的异常,但未在用户代码中处理 附加信息: