c# - 使用页面对象模型和页面工厂时如何在 Selenium WebDriver C# 中应用隐式等待
问题描述
我在 Test 类的 SetUp 方法和页面对象的构造函数中添加了隐式等待。我需要申请等待所有测试方法。但它不起作用。任何人都可以帮忙吗?我用过 NUnit 框架
页面对象:
namespace ProjectName.PageObjects
{
class SearchPage
{
IWebDriver driver;
public SearchPage(IWebDriver driver)
{
this.driver = driver;
PageFactory.InitElements(driver, this);
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(40);
}
[FindsBy(How = How.XPath, Using = "//a[text()='Search']")]
IWebElement search;
public void SearchClick()
{
search.Click();
}
}
}
测试类:
namespace ProjectName
{
class SearchTestClass
{
IWebDriver driver;
SearchPage search;
[SetUp]
public void SetUp()
{
driver = new ChromeDriver();
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(40);
//Go to URL
//Login
}
[Test]
public void SearchTest()
{
search.SearchClick();
}
}
}
解决方案
最好有一个通用类,您可以在其中将基本初始化内容作为一种方法,如下所示,并在测试方法开始之前在所有测试类中调用该方法。
并将父类 BaseTest 派生到所有测试类。
我对您的代码进行了一些修改,如下所示。
公共类 BaseTest {
IWebDriver 驱动程序;
public static void Initialization() {
driver = new ChromeDriver();
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(40);
//Go to URL
//Login
} }
页面对象:
命名空间 ProjectName.PageObjects { 类 SearchPage { IWebDriver 驱动程序;
public SearchPage(IWebDriver driver)
{
this.driver = driver;
PageFactory.InitElements(driver, this);
}
[FindsBy(How = How.XPath, Using = "//a[text()='Search']")]
IWebElement search;
public void SearchClick()
{
search.Click();
}
}
}
测试类:
命名空间项目名称 { 类 SearchTestClass {
SearchPage search;
[SetUp]
public void SetUp()
{
//Just call the Initialization method in every test class like here before the test methods starts execution
Initialization();
}
[Test]
public void SearchTest()
{
search.SearchClick();
}
} }
推荐阅读
- asp.net-core - ASP.NET Core 应用程序在 url https://gearssdk.opswat.com/ 之后注册,即使我没有注册它
- python - 如何从 Google 搜索结果页面中抓取所有结果(Python/Selenium ChromeDriver)
- node.js - firebase 数据库和快递
- firebase - 除非我热刷新,否则数据流不会在 iOS 上显示
- python - 断开我的机器人与语音频道 discord.py 的连接
- node.js - 在graphql中合并不同的模式
- javascript - 将事件侦听器添加到提交按钮以运行函数
- java - 无法从DataSource获取Jdbc连接,不支持认证类型10
- html - 试图在悬停时显示 div 但没有任何效果
- java - 如何支持应用在所有包含指纹功能的设备上运行