ai didi

selenium - 如何将 selenium 2 PageFactory init Elements 与 Wait.until() 一起使用?

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

下面的代码片段工作正常,但我在使用 wait.until() 行时遇到了一些问题:

wait.until(new ElementPresent(By.xpath("//a[@title='Go to Google Home']")));

它有效,但我想发送我的 PageFactory WebElement homePageLink :

wait.until(new ElementPresent(homePageLink));

有什么办法可以做到这一点吗?

这些新的 Selenium 2 功能让我有点头晕,而且我找不到太多文档。

谢谢。

public class GoogleResultsPage extends TestBase {

@FindBy(xpath = "//a[@title='Go to Google Home']")
@CacheLookup
private WebElement homePageLink;

public GoogleResultsPage() {
wait.until(new ElementPresent(By.xpath("//a[@title='Go to Google Home']")));
assertThat(driver.getTitle(), containsString("Google Search"));
}
}

public class ElementPresent implements ExpectedCondition<WebElement> {

private final By locator;

public ElementPresent(By locator) {
this.locator = locator;
}

public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
}

最佳答案

我使用PageFactoryAjaxElementLocatorFactory - PageFactory 是您正在使用的 Selenium 2 页面对象模式的支持类,AjaxElementLocatorFactory 是元素定位器的工厂。在您的情况下,构造函数将如下所示:

public GoogleResultsPage() { 
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 15), this);
}

此代码将等待最多 15 秒,直到注释指定的元素出现在页面上,在您的情况下是由 xpath 定位的 homePageLink。您不需要使用 ElementPresent 类。

关于selenium - 如何将 selenium 2 PageFactory init Elements 与 Wait.until() 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3272883/

24 4 0
文章推荐: asp.net - 升级到 MVC 5.2.0.0 导致异常 "Method not found: ' Boolean System.Web.WebPages.BuildManagerWrapper.IsNonUpdateablePrecompiledApp”
文章推荐: html - 在 中使用
可以吗?
文章推荐: c# - 休眠直到文件存在/创建
文章推荐: prolog - 如何在序言中使用repeat/0打印一组数字?
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com