首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用标签名称在黄瓜中截图

如何使用标签名称在黄瓜中截图
EN

Stack Overflow用户
提问于 2017-10-20 14:41:08
回答 2查看 493关注 0票数 0

我有以下用Selenium/Java编写的代码,但我想将此代码参数化,并添加截图所用的标记名:

代码语言:javascript
运行
复制
@Then("^Take Screenshot$")
public void tearDown() {
    // take the screenshot at the end of every test
    String location = "D:/ubdd/screenshots/";
    DateFormat dateFormat = new SimpleDateFormat("dd-mm-yyyy h-m-s");
    Date date = new Date();
    File scrFile = 
    ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
    // now save the screenshto to a file some place
    try {
    FileUtils.copyFile(scrFile, new File(location + 
    dateFormat.format(date)+".png"));
    System.out.println("Screenshot saved");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
EN

回答 2

Stack Overflow用户

发布于 2017-10-20 18:11:12

使用Before hook and add the Scenario object作为参数。Cucumber将使用当前执行的场景注入此脚本。

代码语言:javascript
运行
复制
private Scenario sce;

    @Before
    public void beforeHook(Scenario scenario) {
         this.sce = scenario


        List<String> tags = sce.getSourceTagNames();
    }

您可以在步骤定义中访问存储的方案对象以调用getSourceTagNames()来获取标签

票数 1
EN

Stack Overflow用户

发布于 2017-10-21 05:48:11

如果您的测试是单线程的,您可以使用之前的钩子来获取正在执行的场景,就像@Grasshoper提到的那样,并将其存储在全局变量中,然后从正在执行的步骤中访问场景来检索标记名:

代码语言:javascript
运行
复制
private Scenario scenario;

@Before
public void setUp(Scenario scenario) {
  this.scenario = scenario;
}

@Then("^Take Screenshot$")
public void tearDown() {
  this.scenario.getSourceTagNames();
  ...
}

对于多线程执行,我将使用ConcurrentHashMap来维护线程ID和正在执行的场景之间的链接。然后,您可以使用线程ID从步骤中检索正在执行的方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46843648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档