测试通过后关闭浏览器 [英] closing browser after test pass

查看:44
本文介绍了测试通过后关闭浏览器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

public void tearDown()
{       
      driver.quit();
}

public void signInFacebook(String link) throws InterruptedException {
    log.header("USER SIGN IN VIA FACEBOOK");
    log.step("Click the Sign In Link");
    clickLink(link);
    Thread.sleep(3000);
    log.log("click success.......");
    log.step("Click 'Sign in with Facebook' Link ");

    // Store the current window handle
    String parentHandle = driver.getWindowHandle();

    // Perform the click operation that opens new window
    driver.findElement(By.cssSelector(CONSTANTs.FB_SIGN_IN)).click();
    Thread.sleep(5000);

    // Switch to new window opened
    log.divider("Facebook Login Screen.....Enter Details Below");
    for (String childHandle : driver.getWindowHandles()) {
        driver.switchTo().window(childHandle);

        if (!childHandle.equals(parentHandle)) {
            log.step("Enter Email address");
            driver.findElement(By.cssSelector(CONSTANTs.FB_EMAIL_TXTBOX))
                    .sendKeys(CONSTANTs.EMAIL_ADDRESS);
            Thread.sleep(2000);
            log.step("Enter password");
            driver.findElement(By.cssSelector(CONSTANTs.FB_PASSWORD_TXTBOX))
                    .sendKeys(CONSTANTs.FB_PASSWORD);
            Thread.sleep(2000);
            log.step("Click Log_In button");
            driver.findElement(By.cssSelector(CONSTANTs.LOG_IN)).click();
            Thread.sleep(2000);
            log.log("Check for First Sign In or Return User.......wait");
            WebDriver switchPage = driver.switchTo().window(parentHandle);
            try {
                if (switchPage.getWindowHandle().contains(parentHandle)) {
                    driver.switchTo().window(childHandle);
                    log.log("Indo App NOT installed..... Click Ok to accept FB permissions...");
                    optionalClick(By.cssSelector(CONSTANTs.OK_CONTINUE_AS));
                    driver.switchTo().window(parentHandle);
                }
                log.log("DONE....... ");
                // break;
            } catch (Exception e) {
                log.log("Indo App Already exist on Users Fb acct ... Move to next screen");
            }
            break;
        }
    }

    log.log("Check if User is Signed In or Has Signed In with another account.......wait");
    Thread.sleep(5000);
    try {
        if ((driver.findElement(By.cssSelector(CONSTANTs.MY_ACCOUNT_LINK)))
                .isDisplayed()) {
            log.log("First Sign In ....... Successfully Logged in Using FB.");
            Thread.sleep(3000);
            tearDown();
        }
    } catch (Exception e) {
        log.header2("Second Sign In ...... User Already signed In with a different Acct........ pls wait");
    }
    driver.switchTo().window(parentHandle);     
    Thread.sleep(3000);

    try {
        if (driver.findElement(
                By.cssSelector(CONSTANTs.ALREADY_SIGNED_UP_PASSWD_TXTBOX))
                .isDisplayed()) {
            log.log("User Already signed Up with a NATIVE acct .....Please Enter Password for Native acct");
            driver.findElement(
                    By.cssSelector(CONSTANTs.ALREADY_SIGNED_UP_PASSWD_TXTBOX))
                    .sendKeys(CONSTANTs.NATIVE_PASSWORD);
            Thread.sleep(2000);
            driver.findElement(
                    By.cssSelector(CONSTANTs.ALREADY_SIGNED_UP_BTN))
                    .click();
            Thread.sleep(2000);
            log.log("Successfully Linked NATIVE acct with FB.");
            Thread.sleep(3000);
            tearDown();
        }

    } catch (Exception e1) {
        log.log(" acct....wait, checking other acct......");
    }


    try{
        if (driver.findElement(
                By.cssSelector(CONSTANTs.SIGN_IN_WITH_GOOGLE_BTN))
                .isDisplayed()) {
            log.log("User is Signed in Already with GOOGLE account ... Click Google button to Link account.");
            Thread.sleep(3000);
            driver.findElement(
                    By.cssSelector(CONSTANTs.SIGN_IN_WITH_GOOGLE_BTN))
                    .click();
            Thread.sleep(2000);
            log.log("Successfully Linked .");
            Thread.sleep(3000);
            tearDown();
        }
    }   
        catch(Exception e2) {
            log.log("No Google acct present either.... Please contact Gigya customer support....");
            Thread.sleep(3000);
            tearDown();
        }
}

我试图在我的代码中的任何阶段通过测试后关闭浏览器,但在下面仍然出现错误,简而言之,就是在任何阶段通过我的测试的情况下,不要继续代码执行,不要挂起,而是关闭浏览器.请仔细看看我是否有tearDown().如果此时登录成功,则浏览器应在sleep()之后关闭.

Am trying to close the browser after a test pass at any stage in my code but i keep getting error below, What am trying to do in a nut shell is that, if my test passes at any stage, don't continues code execution, don't hang rather, close browser. Please take a closer look at were i have the tearDown(). if the login is successful at that point, then, browser should close after the sleep().

请,我检查了以前的解决方案,但没有为我工作.Driver.close或quit应该可以工作,但是不行,也许是做错了什么.....感谢您的任何事先帮助.

Please, i have checked previous solutions but didnt work for me. Driver.close or quit should work but its not, maybe am doing something wrong..... Thanks for any help in advance.

线程主"中的异常org.openqa.selenium.remote.SessionNotFoundException:会话ID为null.调用quit()后使用WebDriver吗?构建信息:版本:'2.45.0',修订版本:'32a636c',时间:'2015-03-05 22:01:35'系统信息:主机:'Ola-PC',ip:'10 .255.253.14',os.name:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version:'1.7.0_76'驱动程序信息:driver.version:RemoteWebDriver在org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:125)在org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:66)在org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:572)在org.openqa.selenium.remote.RemoteWebDriver $ RemoteTargetLocator.window(RemoteWebDriver.java:890)在com.independent.helper.testPageNavi.signInFacebook(testPageNavi.java:475)在com.independent.helper.testing.main(testing.java:113)

Exception in thread "main" org.openqa.selenium.remote.SessionNotFoundException: Session ID is null. Using WebDriver after calling quit()? Build info: version: '2.45.0', revision: '32a636c', time: '2015-03-05 22:01:35' System info: host: 'Ola-PC', ip: '10.255.253.14', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_76' Driver info: driver.version: RemoteWebDriver at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:125) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:66) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:572) at org.openqa.selenium.remote.RemoteWebDriver$RemoteTargetLocator.window(RemoteWebDriver.java:890) at com.independent.helper.testPageNavi.signInFacebook(testPageNavi.java:475) at com.independent.helper.testing.main(testing.java:113)

推荐答案

您要在一项特定测试之后关闭Webdriver.这是一个很好的方法,但是您需要为要运行的每个新测试启动一个新的webdriver.

You are closing the webdriver after one particular test. This is a good approatch but you will need to start a new webdriver for each new test that you want to run.

您有两个选择.1.每次测试后制作一个新的webdriver.2.导航回到开始页面,以便您可以开始新的测试.

You have two options. 1. make a new webdriver after each test. 2. navigate back to the begin page so you can start a new test.

我建议选择1.

@Before
public void before() {
    driver = new ChromeDriver();
}

@After
public void tearDown()
{
    driver.quit();
}

@Test
public void signInFacebook(String link) throws InterruptedException {
    //Do 1 test here
}

这篇关于测试通过后关闭浏览器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆