我有一段代码需要存储在try catch块中。自定义等待try catch webdriver
这是一段代码。我说的是
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秒是可以设置自定义超时值try catch块。
我想隐式地等待()会做的伎俩(思考如果框架不可用隐式等待将尝试将DOM对象池3秒,然后移动捕捉),但它似乎并不工作,但它仍然等待超时前60秒,并说明
'Timed out after 60 seconds waiting for frame to be available:'
任何人都可以指出我可能如何修改超时等待生成。或者在try catch块上设置超时时间,所以如果frame不可用并且只需继续脚本,我不必等待1分钟?
谢谢。
感谢您的重播,基本上是当页面加载它有不同的按钮和一些这个按钮打开“选项”这是一个框架,有时帧被分离(中由于JavaScript负载)从页面,所以我得到陈旧元素异常。所以这行代码做这个.wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id(“PegaGadget0Ifr”)));在进行一些操作之前等待一个帧被完全加载。有时候如前所述需要等待,但大多数情况下不是当框架不分离时不需要等待领先。 –
但这个尝试catch块不会在重新加载帧不需要时等待。并且在超时之前花费大量时间完成1分钟。 –
如何添加1个更多的条件来检查页面是否实际包含Iframe元素,如果它有元素,那么等待否则出来try catch block(); Assert.assertTrue(driver.getPageSource()。contains(textOnThePage)); 所以这将检查你的页面源代码是否有Iframe,并根据你可以等待或不等待。 –