实时调试WebDriver代码

来源:互联网 发布:mac优酷 编辑:程序博客网 时间:2024/06/10 09:29

简介:我们在做web自动化测试的时候,每次检查一些新的操作或者定位一个元素的代码是否起作用时,都要运行一遍代码重启一个浏览器,再跳到相应的操作页面,这样的调试很费时间。现在有个测试前辈写了个工具可以让我们的调试方便一些(参考:https://testerhome.com/topics/9460)。我现在调试就用这个工具,挺好用的,所以总结一下使用过程。

添加jar包

1、jar包地址:http://download.csdn.net/download/galen2016/10034198
2、把jar包添加到构建路径(我用的eclipse)

MteSenseWdadTest.java

1、MteSenseWdadTest.java:这就调用并实时执行测试方法的类

public class MteSenseWdadTest {    ChromeDriver driver;    @BeforeMethod    public void setUp() throws Exception {        System.setProperty("webdriver.chrome.driver", "resource/chromedriver.exe");        DesiredCapabilities capabilities = DesiredCapabilities.chrome();        capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);        driver = new ChromeDriver(capabilities);        driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);        driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);        driver.manage().window().maximize();    }    @Test    public void testMain() throws Exception {        MteSenseLoader loader = new MteSenseLoader();        loader.senseLoader("chrome","src/com/kdzwy/cases/TestCase.java", "com.kdzwy.cases.TestCase", null, "case2", driver);    }    @AfterMethod    public void tearDown() throws Exception {        driver.quit();    }}

2、代码解释:
(1)这里用了testng框架,setUp()方法里实例化了一个ChromeDriver,并且初始化了ChromeDriver的一些配置
(2)testMain()方法里主要看这句

loader.senseLoader("chrome","src/com/kdzwy/cases/TestCase.java", "com.kdzwy.cases.TestCase", null, "case2", driver);

第一个参数:rivertype,支持这六个关键字 chrome, firefox, safari, ios, android。
第一个参数:用来调试的java文件的路径。参考我的项目目录如下:
这里写图片描述

第三个参数:用来调试的java文件的类名。
第四个参数:需要预先打开的网址, 不需要可以传入 null。
第五个参数:用来调试的java文件的方法名字。
第六个参数:setUp方法里创建的那个ChromeDriver。

3、测试用例的代码如下:
TestCase.java

package com.kdzwy.cases;import org.openqa.selenium.chrome.ChromeDriver;/* *包名:com.kdzwy.cases *作者:Adien_cui *时间:2017-7-28  上午9:17:50 *描述: **/public class TestCase {    public static void case1(ChromeDriver driver) {        driver.get("http://wwww.baidu.com");        driver.findElementById("kw").clear();        driver.findElementById("kw").sendKeys("testng");        driver.findElementById("su").click();//            }    public static void case2(ChromeDriver driver) {        driver.get("http://wwww.baidu.com");        driver.findElementById("kw").clear();        driver.findElementById("kw").sendKeys("what are you talking about?");        driver.findElementById("su").click();//            }}

使用方法

1、运行MteSenseWdadTest.java,我用的是Testng框架,所以run as -testng test(如果是用的junit框架就用junit来运行)
2、首先会运行sepUp()方法,然后运行testMain()方法,这时就会调用TestCase.java里的case2方法了
3、然后我们就可以实时调试case2里的方法了,比如把这句:

driver.findElementById("kw").sendKeys("what are you talking about?");

改成:

driver.findElementById("kw").sendKeys("WTF");

然后,ctrl+s保存,之前打开浏览器就会重新运行一遍case2()方法里的代码,这样就实现了实时调试的功能。

4、最后要注意,case2(ChromeDriver driver)方法要传入ChromeDriver 参数,这个driver就是MteSenseWdadTest .java里实例化的那个

5、运行的日志如下:
这里写图片描述