gpt4 book ai didi

java - 从 WebElement 中提取定位器并使用 pagefactory

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

我遵循页面对象模型,并使用基类,该类具有所有常见且可重用的方法,并为我的 Web 应用程序的每个页面提供单独的页面。

现在我正在尝试在 BasePage 中创建一个可以在其他页面中使用的方法。在每个页面中,我都使用页面工厂作为元素。

我在我的 BaseClass 中使用下面的方法,并且我一直坚持将定位器提取到下面的方法中,以便我可以在所有页面中针对不同的元素定位器使用此方法。

BasePage method:

protected boolean CheckSorting(List<WebElement> element) {
List<WebElement> issueTypeDropdown = new LinkedList<>(driver.findElements(By.)); // stuck here
LinkedList<String> issueTypes = new LinkedList<String>();
for (int i = 0; i < issueTypeDropdown.size(); i++) {
// System.out.println(issueTypeDropdown.get(i).getText());
issueTypes.add(issueTypeDropdown.get(i).getText());
}
return Compare(issueTypes);
}

我被困在这里:

List<WebElement> issueTypeDropdown = new LinkedList<>(driver.findElements(By.)); // stuck here

我使用的页面中的我的 PageFactory:

public @FindBy(xpath = "(//INPUT[@type='search'])[4]/following-sibling::UL") List<WebElement> List;

最佳答案

我过去曾处理过这个问题,但总是不得不求助于其他方法。如果您查看 WebElement 接口(interface)定义,就会发现没有方法可以获取用于定位元素的“By”。

这个问题对您的问题有两个答案: Get the By locator of an already found WebElement

使用实现 WebElement 的类,将 By 和 Webelement 分开,并将 By 存储在他自己的引用变量中。

根据我的经验,处理此类事情的最佳方法是深入研究页面工厂的工作原理,并尝试创建自己的 View 工厂,然后自定义您想要的任何内容。

我知道这不是一个很好的答案,但我想分享这个,做这种事情的唯一方法是不使用页面工厂,或者创建自己的页面工厂。

干杯!

关于java - 从 WebElement 中提取定位器并使用 pagefactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50971163/

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