selenium+java+testng分层设计(四)

来源:互联网 发布:mysql持久化 编辑:程序博客网 时间:2024/05/20 03:08

我使用到的主要就是page,action,testng包,还有一个basic包,可以用来存放一些常用的方法,比如一个查询系统可能会经常用到对下拉框的操作,对表数据的获取等,这些就可以专门写一个类存放在basic包中,以后使用时直接调用即可。

再补充个一点关于xml文件的使用,使用xml文件,可以实现数据和代码的分离,便于对测试数据的维护。

1.新建一个xml文件


2.还是在第四节的基础上,xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" ><suite name="suite1"><test name="test" preserve-order="true"><parameter name="url" value="http://123.57.56.45:7777/test/initLogin" /><parameter name="username" value="999999" /><parameter name="password" value="111111" /><classes ><class name="testng.test"><methods><include name="login" />    <include name="query_keys" /></methods></class></classes></test></suite>
3.test类代码更新为:

package testng;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Parameters;import org.testng.annotations.Test;import org.testng.annotations.BeforeTest;import org.testng.annotations.AfterTest;import com.test.action.LoginAction;import com.test.action.QueryAction;public class test {LoginAction login = null;QueryAction query = null;WebDriver webdriver = new FirefoxDriver();//注意,一定要将该行放在此处,                                         //如果放在beforeTest方法中会导致其他方法执行时报空指针异常@Parameters({"url"})@BeforeTestpublic void beforeTest(String url) {login = new LoginAction(webdriver);//初始化类webdriver.get(url);webdriver.manage().window().maximize();}@Parameters({"username,password"})@Test(priority=1)public void login(String username,String password)throws InterruptedException {//登录login.Login(username, password);}@Test(priority=2)public void query_keys() throws InterruptedException{   //查询界面按键测试query = new QueryAction(webdriver);//初始化类query.AppQueryButton();} @AfterTest  public void afterTest() { webdriver.close();  }}
4.其他类文件无需做任何更改,在eclipse左侧列表中选中testng.xml文件,右键,run as testng suite,即可运行该脚本。


2 0