如何从wdio配置文件中的afterTest挂钩中访问测试运行的文件名?

问题描述

我正在尝试从wdio配置文件中的afterTest钩子访问每个运行测试的文件名。但是,提供给该挂钩的参数均不包含文件名。我尝试过从onWorkerStart挂钩中获取文件名,因为提供给该挂钩的specs参数包括文件名,所以像这样:

onWorkerStart(cid,caps,specs) {
  const fileName = specs[0];
}

但是我不确定如何访问在fileName钩子中的onWorkerStart钩子中创建的afterTest变量。我尝试将其用作全局变量

onWorkerStart(cid,specs) {
  global.fileName = specs[0];
}
aftertest() {
  console.log(global.fileName);
}

但是这只是打印“未定义”。而且,如果我也从onWorkerStart钩子打印它,实际上它确实会首先从那里打印文件名,然后从afterTest钩子打印“未定义”。

解决方法

我终于明白了。我没有意识到wdio配置中的全局变量必须在before钩子内进行,幸运的是,before钩子包含包含文件名的参数specs。因此,要访问所有其他挂钩中的文件名,需要做的就是在global.specFileName = specs[0]挂钩内定义before。现在specFileName可以在afterTest挂钩中使用。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...