• #13 楼 @zhangzhao_lenovo 另外 fiddler 里面劫持域名也可以写到配置里,这样方便不同域名的接口容错测试

  • #13 楼 @zhangzhao_lenovo 如果要简单,个人认为就用 json 文件对应一下特定 api 和 mock 就行了, 类似这种

    [{
      "apiName":"damnson",
      "baseLink" :"xxx",
      ...
      ...
      "mocks" : [mock1, mock2]
    },
    {
        ......
    }
    ]
    

    如果不增删改 mock 逻辑,核心代码不用动,就维护这个 json 就可以了。

  • java.lang.String[] groups
    The list of groups this class/method belongs to.

  • #11 楼 @jet 忘了吹捧了。 这玩意儿真屌,想象了一下在生产中按照自己的业务情况稍微扩展下代码,可极大提高效率。

  • 不太懂 python 勉强看了下 git 的代码,是否可以再向上封装一层,一个域名定制一些 mock 方式(不用每次手工去输入),封装成一些类。然后把这些定制持续集成起来,最终实现共产主义

  • #16 楼 @seveniruby 可以的,人多了必须考虑。。 你想啊,个人中心有名字,邮箱,git, 有的还有公司,, 广告都可以精准投放咯

  • #13 楼 @seveniruby 恩,google 的玩意儿一般人没法作弊。 不过一直都想说,注册页面那个 “公开 Email” 的勾选框应该默认不勾选,很多人不会在意,直接注册。 后期用户量大了,这套系统又没有什么屏蔽机制,也可能是用户信息泄露的隐患吧。 纯属个人瞎想。

  • #11 楼 @CwXwWw 如果是压测工具就是一个亿了

  • #7 楼 @seveniruby 这个一个小脚本就可以实现了吧。。

  • 捐款的支付宝账号是什么!

  • #1 楼 @syl7752 这个软广太 low 了

  • 时间成本投入不足 - 不可以多投入吗?
    目标不清晰 - 不可以先做好调研和分析吗?
    人员经验基本为零 - 不可以招募经验丰富的专业自动化测试人员吗?
    迭代周期快 - 什么叫没有意义?

  • 测试的一些误区 at 2016年10月24日
  • 测试的一些误区 at 2016年10月24日

    这两位见面就打,我怀疑他们其实是同一个人,只是患有精神分裂

  • What a kick ass cake!

  • #14 楼 @huangxiaojiao 只是看到你提及这个 Layout - org.apache.log4j.HTMLLayout . 就想起来以前曾用这个为基类重写方法,来作测试报告。

  • #12 楼 @huangxiaojiao 可以重写的

  • 楼主这个可以贴个样表出来,顺便把 BasicExcelData 贴出来,大家给挖挖挖挖挖,看还能怎么进阶。

    surely 如果有签 NDA 就不要冒险了

  • #17 楼 @wqq_helen 录制的时候要将代理打到 gatling 的监听端口上,所以要设置。运行的时候不需要。

  • 我所喜欢的 PageModel at 2016年06月17日

    #30 楼 @cosyman 祢衡击鼓

  • 我所喜欢的 PageModel at 2016年05月24日

    #25 楼 @quqing 你说的同一个窗口我不能理解,driverA 干嘛要去处理 driverB 启动的浏览器窗口?我觉得你最好就是写个简单的 demo,让我运行出问题,比这些文字表述容易交流的多。

  • 我所喜欢的 PageModel at 2016年05月23日

    #23 楼 @quqing 你看下是不是这意思。如果是,你可以用我这个代码去测试下。反正无论并发多少都不会出一点点问题。

    public class Runner implements Runnable {
    
        /**
         * 
         * @param driver
         * @param windowName
         * 
         * 根据窗口名称切换窗口
         */
        public void SwitchTo(WebDriver driver, String windowName) {
    
            String currentHandle = driver.getWindowHandle();
            Set<String> set = driver.getWindowHandles();
            for (String s : set) {
                if (currentHandle.equals(s)) {
                    continue;
                }
                driver.switchTo().window(s);
                if (driver.getTitle().equals(windowName)) {
                    break;
                }
            }
        }
    
        @Override
        public void run() {
            System.setProperty("webdriver.chrome.driver",
                    "D:\\driver\\chromedriver.exe");
            WebDriver driver = new ChromeDriver();
    
            /**
             * 访问百度,搜索百度
             */
            driver.get("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=baidu&oq=target%3D%26quot%3B_blank%26quot%3B&rsv_pq=93fced2300007201&rsv_t=834bm%2B0f8imPuN4KHbbM%2B0TSEsXx%2B6VbKEccPsk9XSbHOF6PefPDYbGodZA&rqlang=cn&rsv_enter=0&inputT=1018&rsv_sug3=19&rsv_sug1=17&rsv_sug7=100&rsv_sug2=0&rsv_sug4=1018");
            String newWindow = "//em[text()='百度']"; // 这是一个新窗口跳转 target='_blank'
    
    
    
            //保证稳定性,人工加一些等待 2s
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                //什么都不做
            }
    
            /**
             * 打开另一个百度
             */
            driver.findElement(By.xpath(newWindow)).click();
    
    
            //保证稳定性,人工加一些等待 2s
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        //什么都不做
                    }
    
            /**
             * 在第一个百度窗口点击Logo,也回到了首页。现在当前driver有两个完全一样的百度窗口在运行。
             */
            driver.findElement(By.xpath("//a[@id='result_logo']")).click();
    
            /**
             * 百度首页的title
             */
            String title = "百度一下,你就知道";
            /**
             * 输入框
             */
            String input_xpath = "//input[@id='kw']";
    
    
    
            //保证稳定性,人工加一些等待 2s
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        //什么都不做
                    }
    
    
            String wHandler1 = driver.getWindowHandle();
            System.out.println("第一个窗口句柄 " + wHandler1);
            /**
             * 在当前窗口的输入框先输入"第一个窗口"
             */
    
            driver.findElement(By.xpath(input_xpath)).sendKeys("第一个窗口");
    
    
            //保证稳定性,人工加一些等待 2s
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        //什么都不做
                    }
    
            /**
             * 切换到第二个窗口
             */
            SwitchTo(driver, "百度一下,你就知道");
    
            String wHandler2 = driver.getWindowHandle();
            System.out.println("第二个窗口句柄 " + wHandler1);
    
    
            //保证稳定性,人工加一些等待 2s
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        //什么都不做
                    }
    
            /**
             * 在当前窗口的输入框先输入"第二个窗口"。这部分完了你可以去检查一下,是不是N个driver都执行正确。
             */
            driver.findElement(By.xpath(input_xpath)).sendKeys("第二个窗口");
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                //什么都不做
            }
    
            /**
             * 切换回到第一个窗口
             */
            driver.switchTo().window(wHandler1);
    
            /**
             * 关闭第一个窗口
             */
            driver.close();
    
            /**
             * 切换到第二个窗口
             */
            driver.switchTo().window(wHandler2);
    
            driver.findElement(By.xpath(input_xpath)).sendKeys(" 你看看是不是只剩下我一个窗口了??");
    
    
        }
    
        public static void main(String[] args) {
            Runner r = new Runner();
    
            for (int i = 0; i < 5; i++) {
                new Thread(r).start();
            }
        }
    
  • 我所喜欢的 PageModel at 2016年05月23日

    #21 楼 @quqing 兄弟,你可以写份简单的代码,我看一下。比如像如下这种代码,启动 N 个 driver 后,必定互相不干涉。你说的那种 driverA 打开 N 个浏览器窗口是什么场景,我不太理解,给点代码看看吧

    public class Runner implements Runnable{
    
        @Override
        public void run() {
            System.setProperty("webdriver.chrome.driver", "D:\\driver\\chromedriver.exe");
    
            WebDriver driver = new ChromeDriver();
    
            driver.get("http://www.baidu.com");
    
            String searchBox = "//input[@id='kw']";
    
            driver.findElement(By.xpath(searchBox)).sendKeys("这是我要搜索的内容");
    
    
        }
    
    
        public static void main(String[] args) {
            Runner r = new Runner();
    
            for(int i=0; i< 5; i ++) {
                new Thread(r).start();
            }
        }