问题描述
我有两个黄瓜特征。其中只有一个被标记 @maximize
标记,它使浏览器窗口最大化。我还有一个 hooks 类,它包含一个 @Before
钩子,它应该只为标签 @maximize 运行。
但正如我所见,无论 @Before
注释中的标签定义如何,此挂钩始终运行。如果我去掉钩子问题就没有了。这是钩子类的代码:
package hooks;
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.WebDriverRunner;
import io.cucumber.java.After;
import io.cucumber.java.Before;
import org.openqa.selenium.WebDriver;
public class BaseHook
{
@Before(order = 1)
public void setup()
{
System.out.println("setup done");
}
// Also tried @Before(value="@maximize",order=2)
@Before("@maximize",order=2)
public void maximize()
{
Configuration.startMaximized = true;
}
@After
public void tearDown()
{
WebDriver driver = WebDriverRunner.getWebDriver();
driver.close();
driver.quit();
}
}
解决方法
所以问题不在于钩子,而在于浏览器设置中持续存在的 Configuration.startMaximized 设置。它必须在@After 钩子中删除。
// Conf. has to be removed in @After otherwise it persists in browser settings.
@Before("@maximize")
public void maximizeOn()
{
Configuration.startMaximized = true;
}
@After("@maximize")
public void maximizeOff()
{
Configuration.startMaximized = false;
}