gpt4 book ai didi

java - 在没有 PageFactory 的 Selenium 中使用 @FindBy

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

我已经能够成功地将@FindBy与PageFactory一起使用,但培训我的人坚持认为我仍然可以在不使用PageFactory的情况下使用@FindBy。他向我展示了他的代码,乍一看,他似乎没有使用 PageFactory。但是,如果不使用 PageFactory,我总是会收到 NullPointerException。我确实要求他查看我的代码......好吧,他似乎也不知道为什么我的代码不起作用。我希望我能得到一双新的眼睛来启发我。

这是我的代码片段

public class BaseClass {

public WebDriver driver;
private String title;
private Wait<WebDriver> wait;

public BaseClass(WebDriver driver, String title) {

this.driver = driver;
this.title = title;
wait = new FluentWait<WebDriver>(driver).withTimeout(45, TimeUnit.SECONDS).pollingEvery(2, TimeUnit.SECONDS);
}
}

//

public class Test extends BaseClass {


public Test(WebDriver driver) {
super(driver, "Login page");

}


@FindBy(name="j_password")
public WebElement password;

@FindBy(name="j_username")
public WebElement username;

public void startest() throws Exception {
username.clear();
username.sendKeys(id);
password.clear();
password.sendKeys(secret); }
}

最佳答案

不,如果不使用PageFactory就无法使用。阅读以下几行以获得正确的解释:

Page Factory 将根据定义的“定位器”,使用对实际网页上相应元素的引用来初始化每个 WebElement 变量。这是通过使用 @FindBy 注释来完成的。

注释?

在页面工厂中,注释用于为 WebElement 提供描述性名称,以提高代码可读性。注释@FindBy用于标识页面中的Web元素。

默认情况下,PageFactory 将在页面上搜索具有匹配 id 属性的元素,如果失败,则将通过 name 属性进行搜索。但是,因为我们需要更多地控制 HTML 页面中的标识元素并将它们映射到我们的页面对象字段。

以下链接有更多详细信息: http://www.seleniumeasy.com/selenium-tutorials/page-factory-pattern-in-selenium-webdriver

关于java - 在没有 PageFactory 的 Selenium 中使用 @FindBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44633202/

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