Java 如何更新页面上的Webelements列表?
如标题所示-如何正确地刷新productList以最终在目录中找到特定的产品 此方法始终单击“显示下一个产品”按钮,即使产品本身在页面上可见。这意味着productList尚未刷新Java 如何更新页面上的Webelements列表?,java,selenium,selenium-webdriver,automated-tests,functional-testing,Java,Selenium,Selenium Webdriver,Automated Tests,Functional Testing,如标题所示-如何正确地刷新productList以最终在目录中找到特定的产品 此方法始终单击“显示下一个产品”按钮,即使产品本身在页面上可见。这意味着productList尚未刷新 public void findProductAndAddToCart() { //searching for products by className List<WebElement> productList = SeleniumDriver.getDrive
public void findProductAndAddToCart() {
//searching for products by className
List<WebElement> productList = SeleniumDriver.getDriver().findElements(By.className("bcom--txtBold"));
for (int i = 0; i < productList.size(); i++) {
//getting the numbers of the products
String element = productList.get(i).getText();
if (element.equals("7000029644")) {
productList.get(i).isDisplayed();
System.out.println("Product is displayed");
SeleniumDriver.getDriver().findElement(By.xpath("XPATH - Add to Cart Button')]")).click();
break;
} else {
//the product hasn't been found, so need to click "Show Next Products"
SeleniumDriver.getDriver().findElement(By.xpath("//a[contains(.,'Show Next')]")).click();
List<WebElement> newProductList = SeleniumDriver.getDriver().findElements(By.className("bcom--txtBold"));
productList.addAll(newProductList);
}
你可以试试这样的
public void findProductAndAddToCart() {
boolean flag = true;
while (flag) {
flag = isNextEnabled();
//searching for products by className
List<WebElement> productList = SeleniumDriver.getDriver()
.findElements(By.className("bcom--txtBold"));
for (WebElement e : productList) {
//getting the numbers of the products
String element = e.getText();
if (element.equals("7000029644")) {
e.isDisplayed();
System.out.println("Product is displayed");
SeleniumDriver.getDriver().findElement(By.xpath("XPATH1')]")).click();
flag = false;
break;
} else {
//don't click next here
}
}
SeleniumDriver.getDriver().findElement(By.xpath("//a[contains(.,'Show
Next')]")).click();
}
}
private boolean isNextEnabled() {
return SeleniumDriver.getDriver()
.findElements(By.xpath("//a[contains(.,'Show Next')]")).isEnabled;
}
如果我读对了,你的意思是说你看不到产品显示在控制台上吗?而是执行else语句?是的,没错。它一直在搜索..你能分享网址吗?这样我们就可以试一下了我希望我能。这是公司内部网站的测试环境,需要认证,我不能透露//我补充说。1产品编号2显示下一步按钮3添加到购物车按钮HI。感谢您的想法,但是它会一直单击“显示下一步”按钮,即使产品在目录中可见/如果您将productList打印到console,您是否看到了要查找的产品?该产品在显示的页面上不可见,因为我需要单击“显示下一步…”。。。。当它出现在第一页时,没有问题。问题在于元素的每次迭代-驱动程序都会单击按钮。因此,如果我想找到位于第14个位置的产品-司机点击按钮14次,这是不必要的,因为我只需点击一次,因为产品显示在第2页。你能试试我发布的代码吗?它将首先遍历第一页中的所有元素,如果未找到“仅”,则将单击“下一步”按钮。因此,在单击“下一步”按钮之后,在列表迭代过程中,应该会找到您的产品。因此,我发布的代码基本上会在一个列表上不断重复&单击next,直到找到一个产品,或者不再有nextI从控制台截图并在上面更新输出。