java – Selenium Webdriver AJAX – 如何等待请求完成
发布时间:2020-12-15 04:12:11 所属栏目:Java 来源:网络整理
导读:我有一个场景,我无法继续前进: 我在页面上有两个按钮(两个按钮都在同一个框架中).我正在使用按钮1的迭代器.当我们单击按钮1时,它会进行AJAX调用.我看到鼠标加载动画一秒钟,然后产品被添加到购物车. 比方说,如果我有5个相同类型的按钮想要单击所有5个按钮,当
我有一个场景,我无法继续前进:
我在页面上有两个按钮(两个按钮都在同一个框架中).我正在使用按钮1的迭代器.当我们单击按钮1时,它会进行AJAX调用.我看到鼠标加载动画一秒钟,然后产品被添加到购物车. 比方说,如果我有5个相同类型的按钮&想要单击所有5个按钮,当我使用迭代器单击5个按钮时,控件将退出循环而不是单击第二个按钮. Iterator<WebElement> button1 = T2.iterator(); while(button1.hasNext()) { button1.next().click(); Thread.sleep(10000); } driver.findElement(By.id("button2 id")).click(); 如果我使用Thread.sleep(),它工作正常.但我不想使用它,因为它不是正确的方法. button2 id也处于启用状态,我无法使用 甚至试过隐含的等待,但没有运气. 避免此类问题的最佳方法是什么? 解决方法
正确的方法是明确等待产品添加到购物车.操作完成后页面上有些变化,对吧?所以等待发生变化!显然,我不知道你的网页,但有些东西是这样的:
// 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<WebElement> 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))); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |