从 WebElement 中提取定位器并使用 pagefactory
Extracting locator from from WebElement and using pagefactory
我遵循 Page 对象模型并使用一个 Base class,它具有所有常见且可重用的方法,并为我的 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 接口定义,则没有获取用于定位元素的 "By" 的方法。
这个问题对你的问题有两个答案:
使用实现 WebElement 的 class 并将 By 和 Webelement 分开,并将 By 存储在他自己的引用变量中。
根据我的经验,处理此类事情的最佳方法是深入了解页面工厂的工作原理,并尝试创建您自己的视图工厂,然后从那里自定义您想要的任何内容。
我知道这不是一个很好的答案,但我想分享这个,做这种事情的唯一方法是不使用页面工厂,或者创建你自己的。
干杯!
我遵循 Page 对象模型并使用一个 Base class,它具有所有常见且可重用的方法,并为我的 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 接口定义,则没有获取用于定位元素的 "By" 的方法。
这个问题对你的问题有两个答案:
使用实现 WebElement 的 class 并将 By 和 Webelement 分开,并将 By 存储在他自己的引用变量中。
根据我的经验,处理此类事情的最佳方法是深入了解页面工厂的工作原理,并尝试创建您自己的视图工厂,然后从那里自定义您想要的任何内容。
我知道这不是一个很好的答案,但我想分享这个,做这种事情的唯一方法是不使用页面工厂,或者创建你自己的。
干杯!