作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用以下方法在 C# 中加载页面的页面工厂元素。我想在Java中做类似的事情。有人知道我该怎么做吗?
这是 Pages.cs 文件:
using System.Dynamic;
using OpenQA.Selenium.Support.PageObjects;
namespace Framework.Pages
{
public static class Pages
{
private static T GetPage<T>() where T : new()
{
var page = new T();
PageFactory.InitElements(Browser.Driver, page);
return page;
}
public static RegistrationPage RegistrationPage
{
get { return GetPage<RegistrationPage>(); }
}
public static NavigationLinks NavigationLinks
{
get { return GetPage<NavigationLinks>(); }
}
}
}
有一个 RegistrationPage.cs 和 NavigationPage.cs 文件,其中定义了所有页面工厂元素和页面特定方法。
所以有了这个系统我可以简单地写
Pages.NavigationLinks.ClickRegistration();
Pages.RegistrationPage.CompleteForm();
类似于没有任何实例化的测试线。当我调用 Pages.NavigationLinks 时。它会自动加载页面元素和方法。
是否可以用Java创建这样的系统
最佳答案
public class Pages {
private static<T> T getPage(Supplier<T> construct) {
T t = construct.get();
PageFactory.initElements(driver, t);
return t;
}
public static RegistrationPage getRegistrationPage() {
return getPage(RegistrationPage::new);
}
}
关于java - 如何在 Java Selenium 中使用类型对象传递页面元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50560416/
我是一名优秀的程序员,十分优秀!