测试通过后关闭浏览器
closing browser after test pass
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();
}
}
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 应该有效,但不是,也许我做错了什么.....
提前感谢您的帮助。
线程中出现异常 "main" org.openqa.selenium.remote.SessionNotFoundException:会话 ID 为空。调用 quit() 后使用 WebDriver?
构建信息:版本:'2.45.0',修订:'32a636c',时间:'2015-03-05 22:01:35'
系统信息: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.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)
您将在一项特定测试后关闭网络驱动程序。这是一个很好的方法,但是你需要为每个你想要的新测试启动一个新的 webdriver 运行。
你有两个选择。
1.每次测试后制作一个新的webdriver。
2. 导航回开始页面,以便您可以开始新的测试。
我推荐选项 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
}
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();
}
}
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 应该有效,但不是,也许我做错了什么..... 提前感谢您的帮助。
线程中出现异常 "main" org.openqa.selenium.remote.SessionNotFoundException:会话 ID 为空。调用 quit() 后使用 WebDriver? 构建信息:版本:'2.45.0',修订:'32a636c',时间:'2015-03-05 22:01:35' 系统信息: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.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)
您将在一项特定测试后关闭网络驱动程序。这是一个很好的方法,但是你需要为每个你想要的新测试启动一个新的 webdriver 运行。
你有两个选择。 1.每次测试后制作一个新的webdriver。 2. 导航回开始页面,以便您可以开始新的测试。
我推荐选项 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
}