自定义等待尝试捕获网络驱动程序



我有一段代码需要存储在try catch块中。

这是一段代码。我说的是

    try{
        this.driver.manage().timeouts().implicitlyWait(3000, TimeUnit.MILLISECONDS);
        this.wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("PegaGadget0Ifr")));

    } catch(Exception e){
        System.out.println(e.toString());
    }

正如我现在设置的那样,它可以工作,但如果帧不可用,它将等待 60 秒,然后再进入捕获,是否可以为尝试捕获块设置自定义超时。

我在想隐式等待(

(可以解决问题(认为如果帧不可用,隐式等待将尝试池化 DOM 对象 3 秒,然后移动到捕获(,但它似乎不起作用。但它仍然等待 60 秒,然后超时并声明

'Timed out after 60 seconds waiting for frame to be available:'

谁能指出我如何修改超时的等待构建。 或者在 try catch 块上设置超时,这样我就不必在帧不可用时等待 1 分钟并继续脚本?

谢谢。

我自己找到了答案。 本质上,我需要做的是在尝试条件中修改显式等待。 因此,后面的等待步骤将等待您指定的秒数。

这是代码示例

try{

    WebDriverWait customWait = new WebDriverWait(driver, 2); //2 is for seconds before timingout
    customWait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("PegaGadget0Ifr")));

} catch(Exception e){
    System.out.println(e.toString());
}

对于上面的 try catch 块,您正在使代码首先检查,然后等待,直到您的预期条件变为真。因此,为此,它将继续等待,直到超时发生或您的条件为真,例如是否找到元素。因此,实际修改可能不适用于您的情况。

另一种方式可能是,如果假设(假设从结束(,您可以等待页面存在,然后检查 IFrame 是否可用(因为假设一旦页面加载 IFrame 也会被加载(。你当然可以检查一下。

  driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

上面的代码用于等待您的页面加载。此外,如果您有不同的要求,那就太好了,您可以发布更多关于您如何等待 IFrame 的示例?IFrame是否在页面加载后加载?更多信息..

相关内容

最新更新