gpt4 book ai didi

java - Selenium getDriver() 对于@AfterScenario 是空的(在 AssertionError 之后)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:33 24 4
gpt4 key购买 nike

我有一个 PageObject startPage我有一个登录和注销方法。登录方法工作正常并在 @BeforeScenario 中执行:

@BeforeScenario
public void login() {
// {..} Declaration of baseUrl,user,password...

homeVM.setDefaultBaseUrl(baseUrl);
homeVM.open();
homeVM.login(user, password);
}

login(user,password)class homeVM就像:

typeInto(find(By.id(getUserFieldId())), user);
typeInto(find(By.id(getPasswordFieldId())), password);
findBy(getLoginButtonXPath()).then().click();

没什么特别的,一切正常。然后我切换了几个 PageObjects在不同的测试步骤中没有问题。当代码到达 @AfterScenario看起来像:

@AfterScenario
public void logout() {
homeVM.logoff();
}

class homeVM用方法 logoff()看起来像:

WebElement btnLogout = getDriver().findElement(By.xpath("//a [contains(@class,'lnkLogout')]"));
btnLogout.click();

但这是行不通的(没有任何反应,没有异常(exception),没有点击......只是没有)。然后我尝试记录一些关于 getDriver() 的信息与:

System.out.println("WindowHandles:"+getDriver().getWindowHandles().size());
System.out.println("Title: "+getDriver().getTitle());

并且两个值都是空的 ("")。所以看起来 getDriver()只是空的(甚至不是空的,所以我没有得到 NullPointerException )。为什么会这样?我试着检查 getDriver()最后PageObject我在我的测试中使用过,但我得到了我需要的所有信息,只是 getDriver()@AfterScenario是空的。任何想法或解决方案下一步该做什么或为什么会发生这种情况?我正在使用 chromeDriver .

编辑:好吧,我意识到了一些意想不到的事情:我有一个 assertThat(<something>)我最后一步中的方法,这一步实际上产生了分配失败(因为行为尚未实现)......如果我评论这个 assertThat()出来,@AfterScenario并且其注销已正确执行。所以 webDriver如果测试失败会被“清空”?这是故意的吗?

编辑 2:如果我 catch AssertionErrorException异常测试再次运行正常,但当然测试将被标记为“测试通过”。因此,如果当前 webDriver 抛出异常,它确实有一些事情要做。被清空。但这似乎是错误的...

最佳答案

一旦 Serenity(或本例中的 Thucydides)发现测试失败(例如,断言错误),测试将切换到“空运行”模式,因为它认为后续步骤受到损害,可能会导致不必要的 (和慢)网络驱动程序调用。

关于java - Selenium getDriver() 对于@AfterScenario 是空的(在 AssertionError 之后),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31473491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com