gpt4 book ai didi

java - Selenium - 页面对象工厂 - 重新加载后引用同一页面上的元素

转载 作者:行者123 更新时间:2023-12-01 12:24:36 24 4
gpt4 key购买 nike

我正在使用 Webdriver 和 Java 测试网页。

测试页包含记录列表,我单击“员工 ID”标题超链接,记录应按员工 ID 的升序排序,并且“员工 ID”列旁边应有一个小图标指示结果现已排序。

这是我的代码:

public Class ResultsPage extends SlowLoadableComponent<ResultsPage> {

@FindAll({ @FindBy(how = How.XPATH, using = "some xpath"), @FindBy(how = How.XPATH, using = "another xpath") })
public List<WebElement> resultsTableElement;

@FindBy(how = How.XPATH, using = "//a[@title='A system assigned identifier for the Employee record.']")
public WebElement employeeIDColumnTitle;

@FindBy(how = How.XPATH, using = "//a[@title='A system assigned identifier for the Employee record.']/following-sibling::img")
public WebElement ascOrDescIcon;

public ResultsPage(WebDriver driver) {
super(new SystemClock(),20);
this.driver = driver;
wait = new WebDriverWait(driver, Start.TIME_OUT);
PageFactory.initElements(driver,this);
}

@Override
protected void load() {
PageFactory.initElements(driver, this);
LOGGER.info("From the load method");
}

@Override
protected void isLoaded() throws Error {
boolean loaded = false;
if (resultsTableElement.size() > 0) {
loaded = true;
}
LOGGER.warn("isloaded method failed ");
Assert.assertTrue(loaded, "Looks like the Claim Results Search Frame is not loaded yet");
}

public void testThis() {
//some code here
systemIDColumnTitle.click();
PageFactory.initElements(driver, this); //Calling the initElements of the same page again to see that the element
LOGGER.info(ascOrDescIcon.getAttribute("src")); //This line always fails saying that the element is not found.
}

}

最佳答案

根据您指定的注释,为什么不能在同一页面对象中定义定位器,例如:

@FindBy(id="newElement")
private WebElement newElement

这个newElement指向经过一定操作后创建的新元素。

编辑:

根据您的评论,您可以直接调用 get 方法,而不是再次实例化。请理解,所有 @FindBy WebElements 都是代理;只有当你调用它的方法时,它们才会被获取(使用你给定的定位器)并执行特定的操作。

这就是原因,您可以将元素放在页面对象上,并且调用 initElements 不会抛出错误,即使找不到 @FindBy!

关于java - Selenium - 页面对象工厂 - 重新加载后引用同一页面上的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26458276/

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