微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一些类似的硒等待有什么区别?

如何解决一些类似的硒等待有什么区别?

简单的问题:

这两个陈述之间的确切区别是什么:

  1. webdriverwait(self._driver,WEB_WAIT_TIMEOUT).until(ec.invisibility_of_element_located(element))

  1. webdriverwait(self._driver,WEB_WAIT_TIMEOUT).until_not(ec.presence_of_element_located(element))

在这两种情况下,硒的行为在我的情况下是相同的。 提前致谢

感谢回复 好的,但仍有一些我不明白的事情: 我有检查微调器是否不可见的基本功能

`def wait_until_request_api_process_finished(self):
    try:
        webdriverwait(self._driver,1).until(ec.visibility_of_element_located(BaseLoc.spinner))
        webdriverwait(self._driver,10).until(ec.invisibility_of_element_located(BaseLoc.spinner))
    except TimeoutException:
        pass

但是,即使 Spinner 不可见,selenium 也会等待(比预期多大约 8 秒)。有什么问题?

解决方法

ec.invisibility_of_element_located 等待元素不可见。
元素可以存在于页面上但不可见。
对于此类元素,ec.invisibility_of_element_located 将成功返回 True,您的场景流将继续,而 until_not(ec.presence_of_element_located(element)) 将抛出超时异常,因为该元素仍存在于页面上。

,

我从 Selenium 官方文档中得到了一些东西:here

警告:

不要混合隐式和显式等待。这样做会导致 不可预测的等待时间。例如,将隐式等待设置为 10 秒和 15 秒的显式等待可能导致超时 20 秒后发生。

所以对于你的这个问题:

但是,即使 Spinner 不可见,selenium 也会等待(比预期多大约 8 秒)。有什么问题?

  • 是的,因为你把它们都混合了。在删除隐式等待之前(认为 8 秒真的很重要,或者您的测试套件的可靠性更重要)

现在这个问题:

  invisibility_of_element_located 

基本上看到这个内部实现:

 private static boolean isInvisible(final WebElement element) {
    try {
      return !element.isDisplayed();
    } catch (StaleElementReferenceException ignored) {
      // We can assume a stale element isn't displayed.
      return true;
    }
  }

所以它只是在内部检查 isDisplayed()

,

顶部语句会等到 (ec.invisibility_of_element_located(element)) 发生,就像底部语句会等到 (ec.presence_of_element_located(element)) 不发生一样。

旁注功能上我知道这没有意义,但这就是被问到的:)

,

问题的第二(添加)部分的答案:

selenium 脚本有可能(也很可能)在页面加载完成之前检查不可见性。 Selenium 无法知道元素之前是否可见,现在是否不存在于 DOM 中,这就是为什么它会首先等待可见性,然后是不可见性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?