【问题标题】:JUnit stops executing after click closes the popup window单击关闭弹出窗口后JUnit停止执行
【发布时间】:2017-08-21 13:24:32
【问题描述】:

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

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

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

为了更好地说明问题...这是代码示例:

@Before
public void setUp() throws Exception 
{
    driver = new FirefoxDriver();
    baseUrl = "https://www.example.com/";
}

@Test
public void OrderWithLoginFbCash() throws Exception
{
    driver.get(baseUrl);

    // remembers the parent Windowhandle
    String parentHandle  = driver.getWindowHandle(); 

    // Opens Facebook login window
    WebElement FbLogin = (new WebDriverWait(driver , 20)).until(
        ExpectedConditions.presenceOfElementLocated(By.id("fblogin"))
    );
    FbLogin.click();

    for (String winHandle : driver.getWindowHandles()){
        driver.switchTo().window(winHandle);
    }

    // ... filling up the inputs ...

    WebElement FbLoginFacebook = (new WebDriverWait(driver, 20)).until(
        ExpectedConditions.presenceOfElementLocated(By.id("u_0_0"))
    );
    // everything's still fine here
    FbLoginFacebook.click(); // logs in, closes the window and reloads the page

    // !!! Test won't continue here for some reason. !!!

    System.out.println("Did the logging in stuff"); // Won't be printed

}

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

【问题讨论】:

    标签: java testing junit automated-tests junit4


    【解决方案1】:

    所以在尝试了更多之后,我们成功地运行了测试。导致问题的原因显然是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);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 2013-07-25
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多