在服务器上存储快照


WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com/");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\tmp\screenshot.png"));

使用这段代码使用selenium web driver拍摄快照。这段代码只在我的PC上本地存储快照。如果我想从詹金斯自动运行它,是否有任何方法将快照存储在其他地方,以便如果有人通过詹金斯或本地从他们的PC运行它,他们不必每次都更改链接(("c:tmpscreenshot.png")。

您可以通过设置控制输出文件的位置—可以是运行该代码的工具的命令行参数(如果可以修改的话),也可以是可以从上面的代码部分读取的环境变量。您也可以设置一个始终存在的默认位置,并且应该像用户的主目录一样可写,而不是c:tmp的绝对路径。

在jenkins中,我会有一个步骤(在ant脚本,shell脚本中,或诸如此类的)在$WORKSPACE下面创建一个名为"screenshots"的文件夹,然后通过上面建议的方法之一告诉将要运行您的代码的工具关于该位置。如果您想将屏幕截图作为作业输出的一部分,这也很方便。

另外,除非你真的只需要最新的文件(或者有下游代码使用截图并期望一个特定的名称),否则我会在上面的代码中为png引入一个时间戳或其他变量文件命名,例如screenshot-2014-05-16_12-15-37.png,这样如果你运行两次工具,它就不会覆盖之前的文件。

hth

最新更新