【问题标题】:How to fix TimeOutException error when using explicit wait in selenium using java使用java在selenium中使用显式等待时如何修复TimeOutException错误
【发布时间】:2022-02-01 15:54:29
【问题描述】:
try {
        WebDriverWait wait = new WebDriverWait(driver,30);
        WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("myDynamicElement")));
        } catch (TimeOutException toe) {

【问题讨论】:

    标签: java eclipse selenium


    【解决方案1】:

    TimeOutException 当 Selenium 在与传递的定位器匹配的页面元素上定位失败时抛出异常。 myDynamicElement id 在你的情况下。
    这可能是由以下原因之一引起的:
    1)
    您使用了错误的定位器。
    2)
    该元素位于 iframe 内。
    3)
    您在浏览器上打开了一个新标签页/窗口,但没有将驱动程序切换到新打开的标签页。
    等等。

    【讨论】:

      【解决方案2】:

      Java 异常

      执行 Java 程序时可能会出现不同的错误,例如程序员造成的编码错误、错误输入导致的错误或任何其他不可预见的事情。当任何这些错误发生时,Java 都会抛出异常。


      Java Try-Catch{}

      try 和 catch 关键字成对出现。

      • trytry 语句允许您定义一个代码块,以便在执行时对其进行错误测试。

      • catchcatch 语句允许您定义要执行的代码块,如果在 try 块中发生错误。


      visibilityOfElementLocated()

      visibilityOfElementLocated() 是检查元素是否存在于页面的 DOM 上并且可见的期望。可见性意味着元素不仅被显示,而且具有大于 0 的高度和宽度,一旦找到它就会返回 WebElement,否则将引发 TimeOutException


      这个用例

      我在您的代码块中没有看到任何此类语法错误:

      try {
        WebDriverWait wait = new WebDriverWait(driver,30);
        WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("myDynamicElement")));
      } catch (TimeOutException toe) {
        System.out.println("WebElement wasn't found");
      }
      

      但是,没有找到WebElement 的原因可能有很多,其中一些原因如下:

      • 您采用的Locator Strategy 没有标识HTML DOM 中的任何元素。
      • 您采用的Locator Strategy 无法识别该元素,因为它不在浏览器的Viewport 内。
      • 您采用的 Locator Strategy 标识了该元素,但由于存在 style="display: none;" 属性而不可见。
      • 您采用的Locator Strategy 没有唯一地 识别HTML DOM 中的所需元素,目前还发现了其他一些隐藏 / 不可见元素。
      • 您尝试定位的 WebElement 位于 <iframe> 标记内。
      • WebDriver 实例甚至在元素在 HTML DOM 中出现/可见之前就在寻找 WebElement

      解决方案

      上述每种情况都可以使用不同的方法来解决。您可以在以下位置找到一些详细的讨论:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-11
        • 2012-05-11
        • 2021-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多