gpt4 book ai didi

java - @findby 注解可以在 Selenium 接口(interface)中使用吗

转载 作者:行者123 更新时间:2023-11-30 02:12:23 25 4
gpt4 key购买 nike

让我们看下面的代码:

public interface HomePageObjects {

@FindBy(xpath = "//*[@class='_2zrpKA']")
WebElement UsernameField ;

@FindBy(xpath = "//*[@class='_2zrpKA _3v41xv']")
WebElement PswdField ;

}

public class HomePageTests implements HomePageObjects {

WebDriver Driver;

@BeforeClass
public void initpage() {
Driver = LaunchBrowser.Driver;
PageFactory.initElements(Driver, this);
System.out.println(UsernameField + " " + Driver);
}

}

这段代码编译得很好,但是它无法初始化webelements,有谁能解释一下吗?

最佳答案

PageFactory class的源代码,检查 initElements 方法。

public static void initElements(FieldDecorator decorator, Object page) {
Class<?> proxyIn = page.getClass();
while (proxyIn != Object.class) {
proxyFields(decorator, page, proxyIn);
proxyIn = proxyIn.getSuperclass();
}
}

proxyIn.getSuperclass() 返回页面对象的父类(super class),忽略接口(interface)。因此,在您的情况下,它从 HomePageTests.classObject.class。因此,界面中的网络元素将保持未初始化状态。您可以考虑使用抽象类,这是存储状态的更好主意。

关于java - @findby 注解可以在 Selenium 接口(interface)中使用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49680646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com