51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3582|回复: 5
打印 上一主题 下一主题

怎么让每执行一个@Test不要重新开启一个浏览器

[复制链接]
  • TA的每日心情
    慵懒
    2016-4-26 12:45
  • 签到天数: 3 天

    连续签到: 2 天

    [LV.2]测试排长

    跳转到指定楼层
    1#
    发表于 2016-4-11 11:52:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    代码如下:每执行一个@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();
            }

    }
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

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

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 积极回复获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2016-4-21 12:52:29 | 只看该作者
    写一个类初始化driver的,然后所有的类都继承这个类就好了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2016-4-21 14:51:28 | 只看该作者
    楼主的意思是  一个用例执行完了,想在另外的一个用例里继续在已经打开的浏览器实例上操作,而不是必须退出浏览器,重新新建一个Driver 吧?

    感觉楼上的好像都答歪了。。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2016-4-24 12:06:15 | 只看该作者
    如果你是在问如何使用已打开的浏览器的画,请参考:http://blog.csdn.net/wwwqjpcom/article/details/51232302,希望可以帮到你。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2016-4-26 11:12:44 | 只看该作者
    wwwqjpcom 发表于 2016-4-21 14:51
    楼主的意思是  一个用例执行完了,想在另外的一个用例里继续在已经打开的浏览器实例上操作,而不是必须退出 ...

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

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 19:53 , Processed in 0.062755 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表