构建一个 WebDriver 测试工程
WebDriver API 可以通过 Python、Ruby、Java 和 C#访问,支持开发人员使用他们偏爱的编程语言来创建测试。这里我们以 Java 为例。首先需要准备好自己的 Eclipse 环境,并在 selenium 的官方网站下载 Selenium 2 的 Jar 包。
图 2. WebDriver 测试工程
清单 2. 使用 WebDriver API 的脚本 - 登录 SmartCoud iNotes
package demo; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; public class WebDriverDemo { public static void main(String[] args) { //创建一个 firefox driver 实例 WebDriver driver = new FirefoxDriver(); //打开测试网址 driver.get("https://apps.na.collabserv.com/"); //定义用户名和密码文本框 WebElement username=driver.findElement(By.id("username")); WebElement password=driver.findElement(By.id("password")); //输入用户名和密码 username.sendKeys("autouser01@e3yunmail.mail.lotuslive.com"); password.sendKeys("test"); //点击 login 登录 WebElement login=driver.findElement(By.id("submit_form")); login.click(); //设置页面等待直到出现 Mail 链接 (new WebDriverWait(driver, 500)).until(new ExpectedCondition<WebElement>(){ public WebElement apply(WebDriver dr) { return dr.findElement(By.linkText("Mail")); } }); //登出 WebElement logout=driver.findElement(By.linkText("Log Out")); logout.click(); //关闭浏览器 driver.quit(); } } |
Selenium vs WebDriver
从上述用 Selenium 和 WebDriver 构建的两个测试工程来看,WebDriver 工程在构建之后不需要其他的配置我们便可以直接使用,这一点和 Selenium 是截然不同的。因为 Selenium 还需要安装并启动 Selenium Server 才能运行测试程序。
另外,我们可以看出 WebDriver 是基于面向对象的 API,它更多的是从用户角度出发。反之 Selenium 提供的是基于字典的 API,用户可以很方便的看到所以支持的方法。毋庸置疑的是,WebDriver 提供的 API 更为简洁,对用户更加的友好。但从另一个角度来看,就是用户不能很直观的看到 WebDriver 提供了哪些 API,可能需要通过官网提供的 JavaDoc的协助来找寻一些方法。