为什么ExpectedConditions invisibilityOfElementLocated使用元素ID进行工作,但使用Classname作为预加载器却失败?

时间:2019-06-11 19:57:40

标签: selenium selenium-webdriver webdriver webdriverwait

我试图等待预加载器出现在网站上,因为我正在使用ExpectedConditions.invisibilityOfElementLocated,但是最初当我通过类名“ DarkBg”查找预加载器时,显式等待并未等待预加载器变得不可见,但后来当我通过ID定位时,显式等待起作用并一直等到加载程序消失为止。

我已将加载程序映像及其源代码附加在一起。我想知道为什么通过类名定位器的显式等待不起作用?

Preloader

1 个答案:

答案 0 :(得分:1)

在将 ExpectedConditions invisibilityOfElementLocated() classname DarkBg 一起使用时,该元素似乎是一个<div>节点,似乎是<img>节点形式的实际覆盖的父级。此<div>节点仅包含 style height,并且可能比Viewport大(或超出视口),并且可以是Selenium无法与其互动的可能原因:

div_img

<img>标签看来,所有必需的 style 属性都存在于 Viewport 中,并且可以通过以下形式交互widthheighttop等中的

因此可以轻松检测到它。