51Testing软件测试论坛

标题: 怎么让每执行一个@Test不要重新开启一个浏览器 [打印本页]

作者: 小丫头amy    时间: 2016-4-11 11:52
标题: 怎么让每执行一个@Test不要重新开启一个浏览器
代码如下:每执行一个@Test的时候,都要重启一个浏览器,怎么让每一个test都是 在第一次开启的浏览器上操作呢?

package com.parking;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class TestLogin {
        private static String url="http://app.xmparking.net:58080/regulation/login/login";
       
        WebDriver dr=null;
        WebElement element=null;
       
       
        @Before
        public void setUp() throws Exception {
                System.setProperty("webdriver.chrome.driver", "E:/chromedriver_win32/chromedriver.exe");
                dr=new ChromeDriver();
                dr.get(url);
        }

        @After
        public void tearDown() throws Exception {
                dr.close();
        }

        @Test
        public void testUsername() {
               
               
                element=dr.findElement(By.id("loginName"));
                element.clear();
                String name=element.getAttribute("placeholder");
                assertEquals("手机号",name);       
        }
        @Test
        public void testPassWord(){
                element=dr.findElement(By.id("password"));
                element.clear();
                String password=element.getAttribute("placeholder");
                assertEquals("6位以上任意字符,区分大小写!",password);
        }
        @Test
        public void testSaveid(){
                boolean flag;
                element=dr.findElement(By.xpath(".//*[@id='loginForm']/div[3]/div[2]/input[@id='saveId']"));
                //element.clear();
                flag=element.isSelected();
                if(flag=false){element.click();}
                element.click();
                assertTrue(element.isEnabled());
                assertTrue(element.isDisplayed());
                assertTrue(element.isSelected());
               
        }
        @Test
        public void testFogetPassWord(){
                element=dr.findElement(By.xpath(".//*[@id='loginForm']/div[3]/div[2]/a"));
                element.click();
                assertEquals("http://app.xmparking.net:58080/regulation/forgot/forgotPassword",dr.getCurrentUrl());
                dr.navigate().back();
               
               
        }
        @Test
        public void testRegsiter(){
                element=dr.findElement(By.xpath(".//*[@id='loginForm']/div[3]/div[4]/a"));
                element.click();
                assertEquals("http://app.xmparking.net:58080/regulation/register/register",dr.getCurrentUrl());
                dr.navigate().back();
        }

}

作者: joykao    时间: 2016-4-11 13:35
你把junit换成testng,testing支持更多的annotation,@BeforeClass @AfterClass @BeforeMethod @AfterMethod建议把那些个annotation都试一边,这样就知道各个的应用范围了和基本原理也清楚了

作者: kexinqw11    时间: 2016-4-21 12:52
写一个类初始化driver的,然后所有的类都继承这个类就好了
作者: wwwqjpcom    时间: 2016-4-21 14:51
楼主的意思是  一个用例执行完了,想在另外的一个用例里继续在已经打开的浏览器实例上操作,而不是必须退出浏览器,重新新建一个Driver 吧?

感觉楼上的好像都答歪了。。。。
作者: wwwqjpcom    时间: 2016-4-24 12:06
如果你是在问如何使用已打开的浏览器的画,请参考:http://blog.csdn.net/wwwqjpcom/article/details/51232302,希望可以帮到你。
作者: kexinqw11    时间: 2016-4-26 11:12
wwwqjpcom 发表于 2016-4-21 14:51
楼主的意思是  一个用例执行完了,想在另外的一个用例里继续在已经打开的浏览器实例上操作,而不是必须退出 ...

楼主的意思我明白。其实解决方法就是让所有的用例共用一个WebDriver,而不是每个用例都new一个。以这个思想为基础,写一个初始化 WebDriver的类,当然,在写这个初始化类的时候,要考虑是否初始化过,做个判断就可以了。然后所有用例继承这个类,那么这样就达到了每个用例共用一个WebDriver的要求。如果有兴趣,我们可以共同探讨~




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2