我在jUnit的第一次测试中帮助了我的一个朋友。 我们最近遇到了一个问题,我不知道是什么原因引起的。
我们正在执行测试,弹出我们页面上的Facebook登录窗口,然后填写登录输入,它将关闭窗口并刷新浏览器。登录后,我们希望继续测试登录用户的功能。
事情是......在提交和关闭窗口的元素上执行click()
函数后,测试不会跟随并重新开始工作,但一段时间后停止。
更好地指定问题...这是代码示例:
.buttons {
display:flex;
flex-flow: column;
margin-top: auto;
}
我自己不是测试人员,所以我很难说为什么它会停在那里。我认为这可能是因为它设置的窗口在元素的margin-top: auto;
上关闭,但是我想不出任何绕过该问题的方法。任何帮助,将不胜感激。谢谢。
答案 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);
无论如何,如果有人可以解释为什么会这样,以及我们将来如何避免它(或者我们如何处理上述问题中的点击),我将不胜感激。然后我可以将此添加到此答案中。谢谢。