Selenium 何时使用隐式等待以及在何处使用
对于SeleniumWebDriver提供的隐式等待方法,我感到有些困惑Selenium 何时使用隐式等待以及在何处使用,selenium,selenium-webdriver,Selenium,Selenium Webdriver,对于SeleniumWebDriver提供的隐式等待方法,我感到有些困惑 何时使用隐式等待 a-用于页面加载(当使用driver.get时)或Ajax弹出式加载,比如说我正在编辑框中输入一些内容,并且正在进行一些查找或Ajax调用 在哪里使用隐式等待 我应该在Ajax调用或页面加载发生的地方使用所有方法,还是只使用一次就足够了(我只是参考Selenium RC,在这里我们可以使用Selenium.SetSpeed方法) 谢谢, 阿伦 隐式等待和显式等待与我们在程序中使用的驱动程序实例相关。首
- 第二,当谈到隐性等待时,这种等待伴随着生命 驱动程序实例的。只需声明一次,就可以在调用驱动程序实例的任何地方使用它
- 关于您提到的问题,无论是在Ajax调用之后还是在page之后 加载,所以我建议检查您创建了多少驱动程序类实例。因为一旦声明隐式等待一个驱动程序实例,就不必再次声明该驱动程序实例
- 当您确定时间时,在程序中使用隐式等待 由网页上的所有web元素加载/可见并用于 某些Web元素,您发现时间是其中的一个变化因素 它正在加载,然后您可以使用显式等待
- 对于ajax调用,我更喜欢显式等待。但是如果您能够确定ajax调用的最小时间戳是多少,那么您可以在隐式wait中提供
隐式等待在驱动程序上永久强制执行。所以你不需要一次又一次地申报。它会影响驱动程序等待特定的时间,直到它抛出
NoTouchElementException
。但是如果您更多地使用XPath,那么最好在隐式等待中提供更大的超时
要添加的另一件事是,隐式wait只影响findElement和findElements函数。其他功能不受影响
Thread.sleep()
,它将条件设置为等待的确切时间段。提供了一些方便的方法,可以帮助您编写只在需要时等待的代码WebDriverWait
结合ExpectedCondition
是实现这一点的一种方法。示例如下:
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
ExpectedCondition
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
关于如何以及何时使用它们,有一个很好的解释。另外,还比较了隐式、显式和流畅的等待,值得一看。ToolsQA中的断开链接已被替换为:另一篇关于SeleniumWaits高级使用的重要文章如下:@virusrocks感谢链接,我用固定版本更新了帖子的链接
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);