当前位置: 首页 > 面试题库 >

隐式等待删除的可能影响

胡星汉
2023-03-14
问题内容

在我们的Selenium自动化测试中,我们隐式和显式等待。按照JimEvan的想法,不要混为一谈。因此计划删除隐式等待。

对于我们的测试,每当我们与元素交互时,我们都会使用ignoring显式等待其可见,可点击等NoSuchElementException。这就是为什么我不认为它会NoSuchElementException立即抛出。

这样可以确保删除隐式等待不会影响我的测试。除此之外,我想知道它是否有可能破坏测试。根据您的经验,我想了解它的影响,因此要求在此分享您的观点。


问题答案:

你看对了。@JimEvans在讨论中明确指出:

问题的部分原因是隐式等待通常(但可能并非总是如此!)在WebDriver系统的“远程”侧实现。这意味着它们被“嵌入”到IEDriverServer.exe,chromedriver.exe,安装在匿名Firefox配置文件中的WebDriver
Firefox扩展以及Java远程WebDriver服务器(selenium-server-
standalone.jar)。显式等待专门在“本地”语言绑定中实现。使用RemoteWebDriver时,事情变得更加复杂,因为您可能同时使用了系统的本地端和远程端。

因此,与元素交互时,显式等待是任务。

现在,按照WebDriverWait的构造函数:

  • public WebDriverWait(WebDriver driver, long timeOutInSeconds):Wait将NotFoundException默认忽略在“直到”条件下遇到(抛出)的实例,并立即传播所有其他实例。您可以通过调用ignoring(要添加的例外)将更多内容添加到忽略列表。
  • WebDriverWait(WebDriver driver, long timeOutInSeconds, long sleepInMillis):Wait将NotFoundException默认忽略在“直到”条件下遇到(抛出)的实例,并立即传播所有其他实例。您可以通过调用ignoring(要添加的例外)将更多内容添加到忽略列表。

因此,WebDriverWait()默认情况下会忽略NotFoundException,并且直接已知的子类为:

  • NoAlertPresentException
  • NoSuchContextException
  • NoSuchCookieException
  • NoSuchElementException
  • NoSuchFrameException
  • NoSuchWindowException

从WebDriverWait.java的源代码中:

/**
 * Wait will ignore instances of NotFoundException that are encountered (thrown) by default in
 * the 'until' condition, and immediately propagate all others.  You can add more to the ignore
 * list by calling ignoring(exceptions to add).
 *
 * @param driver The WebDriver instance to pass to the expected conditions
 * @param timeOutInSeconds The timeout in seconds when an expectation is called
 * @param sleepInMillis The duration in milliseconds to sleep between polls.
 * @see WebDriverWait#ignoring(java.lang.Class)
 */

因此,在使用 WebDriverWait时, 您将不会遇到 NoSuchElementException 。如果在
WebDriverWait 到期之前没有返回所需的元素,您将面临timeoutException



 类似资料:
  • 驱动程序级别的隐式和显式等待之间有什么区别。哪一个是驱动级等待。如果我们在代码中提供隐式和显式等待。哪一个优先。

  • 我如何用一个显式的替换这个隐式的等待呢? driver=新ChromeDriver(功能); driver.manage().DeleteAllCookies();

  • 我在Java使用Webdriver,我需要等待一个元素,它有一个动态ID显示在网页上。 例如,对于隐式wait,我有以下语句:WebDriverWait wait=new WebDriverWait(driver,30);Wait.Until(ExpectedConditions.VisibilityOfElementLocated(By.id(“DynamicId”))) 是我正在等待的元素ID

  • 问题内容: 当使用隐式等待, 因为在这里建议 ,我仍然 _有时_要断言 即刻 隐形或元素不存在。 换句话说,我 知道 某些元素应该被隐藏,并且希望我的测试能够使断言 快速进行 ,而无需花费几秒钟的时间,因为(否则很有用)隐式等待。 我尝试过的一件事是这样的辅助方法: 但是在上面的代码中,仅 在隐式等待时间过去之后 才返回对调用的调用,即,它不执行我想要的操作。 到目前为止,这是我发现的唯一可行的方

  • 问题内容: 我正在学习Java Maven Selenium。我想要在Selenium中使用这样的东西。 打开网站(例如https://www.facebook.com) 单击登录的电子邮件字段 等待20秒 输入我的电子邮件 这是我的简单代码: 该代码不起作用。它只会打开Facebook,单击电子邮件字段并输入我的电子邮件ID,而不是等待10秒钟才输入我的电子邮件。 问题答案: 并且无法正常工作,

  • 问题内容: 我是初学者。我了解基本等待的内容,但是我对互联网上的不同教程如何放置并进行解释感到困惑。例如,在下面的代码中,将其放置在加载URL之前。因此,是否只是等待URL加载或查找元素或两者兼而有之?的确,如果我在try块中使用一次隐式等待,它是否适用于我在代码中执行的每个元素搜索? 问题答案: 隐式等待 ImplicitWait按照该Java文档是指定的时间量 webdriver的 情况下,即