【问题标题】:Get screenshots from browserstack从浏览器堆栈获取屏幕截图
【发布时间】:2017-07-21 22:46:32
【问题描述】:

我为我的 selenium 测试创建了一个基于 ExpressJS 和 NodeJS 的自定义报告工具。我将有关已执行测试的所有信息存储在自己的数据库中(testrun、testcases、teststeps 等)。

现在,我想显示每个测试步骤的屏幕截图。测试将在 browserstack 中执行,现在我想从构建中获取屏幕截图并将它们集成到我的自定义报告中。我的第一个想法是自己截取屏幕截图并将它们存储到数据库(或文件系统)中,但是图像非常大,为什么不使用 browsertack 的屏幕截图。

是否可以从 browserstack 获取屏幕截图并将它们集成到我的自定义报告工具中的每个测试步骤中?我知道,browserstack 有一个 api,但我认为很难获得它们并将其与我当前的逻辑相匹配。 最好的方法是在运行时从浏览器堆栈获取屏幕截图路径并将其存储到我的数据库中。这可能吗?

【问题讨论】:

  • 你能考虑分享你的作品吗?谢谢
  • 感谢您的提示,但我有很多代码,我认为它与我的问题无关或没有帮助。我还没有实现从浏览器堆栈接收屏幕截图。

标签: java node.js selenium selenium-webdriver browserstack


【解决方案1】:

我从浏览器堆栈中得到以下答案:

Browserstack REST API,它将检索“原始日志”。这些生 需要在本地解析日志以提取屏幕截图 URL 作为会话“可视日志”的一部分自动生成。这些 然后可以将 URL 存储在本地数据库中。 REST API:卷曲 -u “:” https://www.browserstack.com/automate/sessions/.json 以上 API 以 JSON 格式返回响应。取决于 要求您可以使用“logs”、“video_url”、“browser_url”或 “public_url”键。 "logs" : 访问会话的链接 原始日志“video_url”:访问会话记录的链接 video "browser_url" : 只有登录用户才能访问 会话链接“public_url”:可公开访问的会话链接

所以,我想在运行时不可能收到相应的屏幕截图。目前,我正在使用 TestNGListener 类来记录每个测试步骤并将其直接存储到数据库中。我的想法是从浏览器堆栈中获取屏幕截图,例如在调用 afterNavigateTo 时。但这似乎是不可能的。目前,我想我必须在单独的视图中显示我生成的日志和来自 browserstack 的可视化日志。或者有人有其他想法吗?

【讨论】:

  • 好的,如果您无法从 REST API 获取它,该怎么办:截取屏幕截图并将其保存在(单独的)s3 存储桶中,而不是在您的服务器上 - 然后您嵌入 IMG-URL你的 s3 存储桶。
【解决方案2】:

您可以使用此代码 sn-p。它对我有用,我从http://learn-automation.com/how-to-capture-screenshot-in-selenium-webdriver/得到它

import java.io.File;

import java.io.IOException;

import org.apache.commons.io.FileUtils;

import org.openqa.selenium.OutputType;

import org.openqa.selenium.TakesScreenshot;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.annotations.Test;

public class ScreenshootGoogle {

 @Test
 public void TestJavaS1()
{
// Open Firefox
 WebDriver driver=new FirefoxDriver();

// Maximize the window
driver.manage().window().maximize();

// Pass the url
driver.get("http://www.google.com");

// Take screenshot and store as a file format
File src= ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try {
 // now copy the  screenshot to desired location using copyFile //method
FileUtils.copyFile(src, new File("C:/selenium/error.png"));
}

catch (IOException e)
 {
  System.out.println(e.getMessage());

 }
 }

【讨论】:

    猜你喜欢
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2021-11-09
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多