java的ajax迭代_java – Selenium Webdriver AJAX – 如何等待请求完成

我有一个场景,我无法继续前进:

我在页面上有两个按钮(两个按钮都在同一个框架中).我正在使用按钮1的迭代器.当我们单击按钮1时,它会进行AJAX调用.我看到鼠标加载动画一秒钟,然后产品被添加到购物车.

比方说,如果我有5个相同类型的按钮&想要单击所有5个按钮,当我使用迭代器单击5个按钮时,控件将退出循环而不是单击第二个按钮.

Iterator button1 = T2.iterator();

while(button1.hasNext()) {

button1.next().click();

Thread.sleep(10000);

}

driver.findElement(By.id("button2 id")).click();

如果我使用Thread.sleep(),它工作正常.但我不想使用它,因为它不是正确的方法.

button2 id也处于启用状态,我无法使用Wait for the element to be enabled.当执行来到button1.next().click(),i,mediately它将转到下一行,而不完成循环.如果我在button1.next()之后打印一些文本.单击(),文本将被打印5次.但不知道为什么按钮没有被点击.

甚至试过隐含的等待,但没有运气.

避免此类问题的最佳方法是什么?

解决方法:

正确的方法是明确等待产品添加到购物车.操作完成后页面上有些变化,对吧?所以等待发生变化!显然,我不知道你的网页,但有些东西是这样的:

// earlier

import static org.openqa.selenium.support.ui.ExpectedConditions.*;

// also earlier, if you want, but you can move it to the loop

WebDriverWait wait = new WebDriverWait(driver, 10);

Iterator button = T2.iterator();

while(button.hasNext()) {

// find the current number of products in the cart

String numberOfProductsInCart = driver.findElement(By.id("cartItems")).getText();

button.next().click();

// wait for the number of items in cart to change

wait.until(not(textToBePresentInElement(By.id("cartItems"), numberOfProductsInCart)));

}

标签:java,selenium,selenium-webdriver,webdriver

来源: https://codeday.me/bug/20190728/1566611.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值