java让Selenium暂停X秒
我试图完成的是浏览一个页面,等待加载,然后拍摄并保存一个屏幕截图
我已有的代码是
WebDriver driver = new FirefoxDriver();
driver.get("http://www.site.com");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
try {
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("/home/Desktop/image.png"));
} catch (Exception e) {
e.printStackTrace();
}
driver.close();
我需要等待的原因是,即使页面已加载,也会加载,但在站点上,我希望在几秒钟后拍摄加载的内容。由于某些原因,页面没有等待,是否有其他方法可以让驱动程序/页面等待X秒强>
# 1 楼答案
我们寻找一个css标识符,它在x秒内不存在。顺便说一句,这是typescript。这可能是某个相关类上的一个方法,或者是一个函数本身。像这样使用它
这将等待0.7秒,以便您可以看到功能测试中正在运行的任何动画
# 2 楼答案
为了防止它对某人有所帮助,你应该尽量避免隐含的等待,尤其是
Thread#sleep
。如果你这样做Thread.sleep(10)
,你的代码将始终等待10秒钟,即使你的页面在1秒后准备就绪。因此,如果你经常使用,这会大大降低你的测试速度更好的方法是使用ExplicitWaits,这意味着只要某个操作发生或某个元素呈现在页面上,您就会一直等待。所以在你的情况下,我会使用显式等待来检查是否所有内容都已加载,然后截图
# 3 楼答案
最简单的
试试这个,别想休息了!这段代码的等价物可以用在任何语言中。 我是用python写的
这将使编译器进入睡眠状态2秒钟
# 4 楼答案
这并不是硒特有的东西。你只想让java在加载页面之后,但在截图之前,睡一会儿
跟你的司机说。获取声明
# 5 楼答案
如果您想延迟一定的秒数,而不是尽快做出响应,这里有一个暂停功能,类似于selenium IDE提供的功能:
source
# 6 楼答案
您可以找到在初始页面加载后加载的元素,然后让Selenium等待,直到找到该元素