gpt4 book ai didi

java - 是否可以获取具有 WebElement 的 By 对象

转载 作者:行者123 更新时间:2023-12-01 13:42:14 25 4
gpt4 key购买 nike

我正在使用 @FindBy 注释来定位 WebElements。但我想在方法中使用这些 WebElement 作为参数。仅当在页面上找到 WebElement 时我才成功。但如果我想等待它,我必须使用 By (具有相同的定位器)。

例如

private static final String SEARCHFIELD_LOC = "#search input[placeholder]";
@FindBy(css = SEARCHFIELD_LOC)
public WebElement searchField;
public By searchField_by = new By.ByCssSelector(SEARCHFIELD_LOC);

这样我就可以在某种方法中将此 WebElement 用作 By 对象,例如

public boolean isElementDisplayedWithWait(final By by) { .... }

因此对于每个元素我都有 4 行代码。我太懒了,正在寻找一种方法来简化它。

最佳答案

我找到了完全不同的解决方案。我会将我的定位器存储为字符串。

public String searchField = ".slide.slide_search input[placeholder]"

因此每个定位器只需 1 行代码。我希望仅支持 CSS 定位器就足够了。我不会使用 @FindBy 来获取 WebElements。相反,我将使用特殊方法获取 WebElements,该方法将等待元素并记录正在发生的情况。我将像这样实现获取 WebElement:

WebElement we = wait.until(ExpectedConditions.visibilityOfElementLocated(new By.ByCssSelector(locator)));

等待在哪里

Wait<WebDriver> wait = new FluentWait<WebDriver>( driver )
.withTimeout(timeout, TimeUnit.SECONDS)
.pollingEvery(1, TimeUnit.SECONDS)
.ignoring( StaleElementReferenceException.class ) ;

关于java - 是否可以获取具有 WebElement 的 By 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20639580/

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