单击关闭弹出窗口后,JUnit停止执行

时间:2017-08-21 13:24:33

标签: java testing junit automated-tests junit4

我在jUnit的第一次测试中帮助了我的一个朋友。 我们最近遇到了一个问题,我不知道是什么原因引起的。

我们正在执行测试,弹出我们页面上的Facebook登录窗口,然后填写登录输入,它将关闭窗口并刷新浏览器。登录后,我们希望继续测试登录用户的功能。

事情是......在提交和关闭窗口的元素上执行click()函数后,测试不会跟随并重新开始工作,但一段时间后停止。

更好地指定问题...这是代码示例:

.buttons {
  display:flex;
  flex-flow: column;
  margin-top: auto;
}

我自己不是测试人员,所以我很难说为什么它会停在那里。我认为这可能是因为它设置的窗口在元素的margin-top: auto;上关闭,但是我想不出任何绕过该问题的方法。任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

因此,在尝试了一点之后,我们成功地运行了测试。造成这个问题的原因显然是FbLoginFacebook.click(),它实际上关闭了当前活动的窗口,因此测试无法继续。

如果有人对我们如何解决问题感兴趣... FbLoginFacebook元素触发了表单上的提交事件,该事件在成功时关闭了打开的窗口(使用Facebook登录)。我不知道它为什么会起作用,但是在我们手动提交表单之后(通过选择表单元素并在其上执行submit()方法)它完美地工作。然后我们可以通过driver.switchTo().window(previouslySavedParentWindowHandle)返回父窗口,一切都像魅力一样。

// before changing of window we saved the 
// String parentHandle = driver.getWindowHandle();

WebElement FbLoginFacebook = (new WebDriverWait(driver, 20)).until(
    ExpectedConditions.presenceOfElementLocated(By.id("login_form"))
);
FbLoginFacebook.submit();

driver.switchTo().window(parentHandle);

无论如何,如果有人可以解释为什么会这样,以及我们将来如何避免它(或者我们如何处理上述问题中的点击),我将不胜感激。然后我可以将此添加到此答案中。谢谢。