java - 如何在 Java Selenium 中使用类型对象传递页面元素

标签 java c# selenium

我使用以下方法在 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/

相关文章:

java - 声明 Arraylist 的语法包含 java 中的 Arraylist

python - 将csv的内容逐列输入到网站Python中

java - java中使用dao类获取行的异常

c# - 将 IconAlignment 与 WinForms ErrorProvider 一起使用时出现的问题

c# - 为什么我不能使用以下 IEnumerable<string>?

c# - 快速异或算法

python - selenium + nose 并行测试

java - 如何根据 TestNG + Selenium WebDriver 中的运行结果选择下一个 @Test 方法?

java - 查找连接到同一 Wifi 网络的所有设备的 MAC 地址

java - itext 中的阿拉伯语