我有两个黄瓜特性。其中只有一个被最大化浏览器窗口的标记@maximize
标记。我还有一个hooks类,它包含一个@Before
hook,应该只为标签@maximate运行。
但正如我所看到的,无论@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;
}