java - 为什么有些元素存在但不可交互/显示?

标签 java selenium selenium-webdriver webdriver webdriverwait

我对测试还很陌生,试图更好地了解到底发生了什么。我发现当 css 选择器元素附加了 waitUntilCanInteract 或 waitUntilDisplayed 时,我们的一些测试代码失败,即使当我进行 chrome 检查时,该元素显示在浏览器中。将它们更改为 waitUntilExists 会使它们达到一个通过点,所以我想知道究竟发生了什么造成这种情况?

最佳答案

正是Selenium处理元素的三种独特状态。

  • html 中存在元素 :可以通过 ExpectedCondition 检测元素的此状态 presenceOfElementLocated()其中期望是检查元素是否存在DOM 中一个页面的。这并不一定意味着该元素可见

    • 示例:

      WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("css_of_element")));
      
  • html 中元素的可见性 :可以通过 ExpectedCondition 检测元素的此状态 visibilityOfElementLocated()其中期望是检查元素是否存在DOM 中页面的并且可见。可见性意味着该元素不仅会显示,而且高度宽度都大于0

    • 示例:

      WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("css_of_element")));
      
  • 可点击的元素:可以通过ExpectedCondition检测元素的这种状态 elementToBeClickable()期望是检查元素是否可见并且启用,以便您可以单击它。

    • 示例:

      WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("css_of_element")));
      

You can find a detailed discussion in Selenium: Check for the presence of element

关于java - 为什么有些元素存在但不可交互/显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57693634/

相关文章:

java - 如何在同一个 Excel 工作表中读取和写入测试用例的结果

java.sql.SQLException : Result set after last row 异常

java - Webdriver 无法通过在另一个类中设置为变量的定位器找到元素

java - StaleElementReferenceException : determining which element is causing the exception

python - 在 Selenium 中一次加载多个 URL

c# - 获取在节点上执行的测试名称以将 Windows 凭据传递到 Windows Vault for Web 应用程序登录 Selenium 网格

java - 有什么方法可以从文件系统获取文件 CRC?

java - 处理 ExecutionException 的原因

java - 如何加载大的小程序

Selenium 3.0.1 Chrome 节点配置