如果是,则没有任何反应,如果没有出现错误消息.
有几个这样的领域.
当我说:
driver.findElementById(firstId).sendKeys(firstValue); driver.findElementById(secondId).sendKeys(secondValue);
第二个值不会被发送到第二个元素,因为同时会有非常短的ajax请求.但由于值正常(firstValue),它不会显示任何文本或其他任何内容.
我如何告诉Selenium等待这个ajax完成?我不想使用Thread.sleep.
解决方法
您可以使用隐式等待和显式等待来等待特定的Web元素,直到它出现在页面中.您可以定义的等待时间取决于应用程序.
显式等待:
显式等待是您定义的代码,用于在进一步执行代码之前等待某个条件发生.如果达到的条件将终止等待并继续进一步的步骤.
码:
webdriverwait wait = new webdriverwait(driver,30); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(strEdit)));
要么
WebElement myDynamicElement = (new webdriverwait(driver,30)) .until(new ExpectedCondition<WebElement>(){ @Override public WebElement apply(WebDriver d) { return d.findElement(By.id("myDynamicElement")); }});
在抛出TimeoutException之前等待最多30秒,或者如果它发现元素将在0-30秒内返回它. webdriverwait默认情况下每500毫秒调用一次ExpectedCondition,直到它成功返回.对于所有其他ExpectedCondition类型,ExpectedCondition类型的布尔返回true或非null返回值成功返回.
您可以根据应用程序的需要使用ExpectedConditions类.
隐含等待:
隐式等待是告诉WebDriver在尝试查找一个或多个元素(如果它们不是立即可用)时将DOM轮询一段时间
码:
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
要记住的一件事是,一旦设置了隐式等待 – 它将保留WebDriver对象实例的生命周期
有关更多信息,请使用此链接http://seleniumhq.org/docs/04_webdriver_advanced.jsp
您可以在加载AJAX期间使用这些等待.
我希望这会有所帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。