配置Selenium支持RC和Webdriver的混合模式
1、创建类文件DefWebDriver.java
import java.io.File; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriverBackedSelenium; import org.openqa.selenium.ie.InternetExplorerDriver; import com.thoughtworks.selenium.Selenium; public class DefWebDriver { private static String path="\\WebDrive\\IEDriverServer.exe"; private static String baseUrl = "http://172.16.36.23"; public static WebDriver webdriver; public static Selenium selenium; public static JavascriptExecutor js; public void setPath(String path) { DefWebDriver.path=path; } public void setBaseUrl(String baseUrl) { DefWebDriver.baseUrl=baseUrl; } public static void CreatDefWebDriver() { File file = new File(System.getProperty("user.dir")+path); System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); if(webdriver==null)webdriver = new InternetExplorerDriver(); if(selenium==null)selenium = new WebDriverBackedSelenium(webdriver, baseUrl); if(js==null) js = (JavascriptExecutor) webdriver; } }
2、在存放测试用例的每个模块的.java文件的 @BeforeSuite标识的方法内及变量部分添加
//创建selenium实例 static Selenium selenium=null; //创建webdriver实例 static WebDriver webdriver=null; //创建js实例 static JavascriptExecutor js=null; //初始化Selenium部分 @BeforeSuite public static void setupBeforeClass() { /*设置IEWebDriver的路径和访问的URL,可以不设置 *IEWebDriver路径默认是当前项目目录下的【\\WebDrive\\IEDriverServer.exe】 *访问的URL默认是【http://172.16.36.23】 * */ DefWebDriver.CreatDefWebDriver(); if (webdriver == null)webdriver=DefWebDriver.webdriver; if (selenium == null)selenium = DefWebDriver.selenium; if (js == null)js=DefWebDriver.js; //登录到系统中 }
3、如此设置之后,在编写测试用例脚本时,即支持RC方式也支持Webdriver方式,示例如下:
//打开登录页 selenium.open("http://172.16.36.23"); //等待3秒 Pause.PauseExec(3); //获取页面元素 WebElement elementlogin = webdriver.findElement(By.id("loginin")); WebElement elementaccount =webdriver.findElement(By.id("userinput")); WebElement elementpassword = webdriver.findElement(By.id("passwordinput")); //输入用户名和密码,两种方式 //WebDriver.selenium RC方式 // WebDriver.selenium.type("id=userinput", userInfo.GetAccount()); // WebDriver.selenium.type("id=passwordinput", userInfo.GetPassword()); //webdriver方式 elementaccount.sendKeys(userInfo.GetAccount()); elementpassword.sendKeys(userInfo.GetPassword()); //点击登录,三种方式 //直接调用js的click_login()登录 // js.executeScript("click_login()", elementlogin); //webdriver方式的点击登录按钮 elementlogin.click();