有关Selenium中如何连续执行2个方法
想问下,有没有人知道如何通过selenium,连续运行1个class中的2个方法?比如说:
方法1中执行了登录和添加的操作。
方法2中执行了修改的操作。
如何在执行完方法1之后,直接执行方法2,而不需要重新开启1个Selenium? 我也是新手,但是如果这个东西要是让我做的话,我会这么做。
单元测试框架中有一个suite概念,一个suite 加载login的登录方法,加载你的添加方法,加载你的修改方法,
是直接调用方法的,没有冲突。 两个@Test连在一起就行啦。。 给个简单的例子吧:
1)功能代码,也就是你的登录和添加操作的代码:
//登录
package MyScript;
import com.thoughtworks.selenium.*;
public class Login{
public void myLogin(Selenium selenium){
selenium.open("/");
selenium.type("//input[@id='userId' and @value='' and @type='text']", "sgf");
selenium.type("id=password", "111111");
selenium.type("//input[@id='organization' and @value='' and @type='text']", "sgf");
selenium.click("name=submitForm");
}
}
//添加
package MyScript;
import com.thoughtworks.selenium.*;
public class CreateUC
{
public void myCreateUC(Selenium selenium){
selenium.waitForPageToLoad("30000");
System.out.println("CreateUC-1");
selenium.selectFrame("mainFrame");
selenium.selectFrame("commandlist");
selenium.click("//table[@id='urgentcast']/tbody/tr/td/b");
selenium.selectFrame("relative=up");
selenium.selectFrame("detail");
selenium.waitForPageToLoad("30000");
selenium.selectFrame("ucToolbar");
selenium.click("id=newUrgentLink");
selenium.selectFrame("relative=up");
selenium.selectFrame("ucFrame");
selenium.selectFrame("ucList");
selenium.click("link=New Urgent Cast");
selenium.selectFrame("relative=up");
selenium.selectFrame("ucDetail");
selenium.waitForPageToLoad("30000");
selenium.type("id=name", "a");
//selenium.waitForPageToLoad("10000");
selenium.type("id=text", "aaaaaaaaaaaaaa");
selenium.select("id=selDurationSecond", "label=03");
selenium.selectFrame("relative=up");
selenium.selectFrame("relative=up");
selenium.selectFrame("ucToolbar");
selenium.click("id=saveLink");
System.out.println("CreateUC-2");
}
}
//创建一个selenium对象,去调用这两个方法(登录,添加)
package Test;
import MyScript.CreateUC;
import MyScript.Login;
import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;
import junit.framework.TestCase;
public class TestMyScript extends TestCase{
static Selenium selenium = null; //关键,一定要是静态的
public TestMyScript(String strFunctionName){
super(strFunctionName);
if (selenium == null) {//这个判断也很关键
selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://192.168.2.100/");
selenium.start();
}
}
public void testLogin(){
Login login = new Login();
login.myLogin(selenium);
}
public void testCreateUC(){
CreateUC createUC = new CreateUC();
createUC.myCreateUC(selenium);
}
}
//加入testsuite
package Test;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
public class RunWithTestSuite{
public TestSuite testLogin(){
TestSuite suite = new TestSuite();
suite.addTest(new TestMyScript("testLogin"));
suite.addTest(new TestMyScript("testCreateUC"));
return suite;
}
public static void main(String[] args){
RunWithTestSuite myTestSuite =new RunWithTestSuite();
TestSuite suite = myTestSuite.testLogin();
TestRunner.run(suite);
}
} suit()会把每个独立的class中的start、stop都执行一次,如果是一个场景内的对象好像有点儿冗余,其实只要反复循环start和stop之间的部分就可以了。只要后台代理启动着,怎么做,做什么,都是你说了算。 suit()会把每个独立的class中的start、stop都执行一次,如果是一个场景内的对象好像有点儿冗余,其实只要反复循环start和stop之间的部分就可以了。只要后台代理启动着,怎么做,做什么,都是你说了算。 建议参考 seleniumgrid
页:
[1]