前面的学习已经让我们可以轻松的运行js、点击节点,下面该学习如何控制 alert、confirm 和 弹出窗口这些了
【1、如何处理 confirm 和 alert】
处理 confirm、alert 其实很简单,只需要利用 WebDriver 的 switchTo().alert() 方法就可以轻松切换到 alert 对象 Alert,进行控制。
我们直接利用 高级增删改查 的Demo 测试 alert 和 confirm,顺便还使用 sendKeys 进行文字录入的操作
- package lesson5;
- import static org.junit.Assert.*;
- import org.junit.AfterClass;
- import org.junit.BeforeClass;
- import org.junit.Test;
- import org.openqa.selenium.Alert;
- import org.openqa.selenium.JavascriptExecutor;
- import org.openqa.selenium.Keys;
- 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 ExampleForAlert {
- static WebDriver driver;
- @BeforeClass
- public static void init() {
- System.out.println("init...");
- // 如果你的 FireFox 没有安装在默认目录,那么必须在程序中设置
- System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe");
- // 创建一个 FireFox 的浏览器实例
- driver = new FirefoxDriver();
- }
- @Test
- public void test() {
- // 让浏览器访问 zTree Demo
- driver.get("http://www.ztree.me/v3/demo/cn/exedit/edit_super.html");
- // 等待 zTree 初始化完毕,Timeout 设置10秒
- try {
- (new WebDriverWait(driver, 10, 500)).until(new ExpectedCondition<Boolean>() {
- public Boolean apply(WebDriver d) {
- WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#treeDemo li').get(0);");
- return element != null;
- }
- });
- } catch(Exception e) {
- e.printStackTrace();
- }
- ((JavascriptExecutor)driver).executeScript("window.zTreeObj = $.fn.zTree.getZTreeObj('treeDemo');"
- + "window.zTreeNode = window.zTreeObj.getNodes()[0];"
- + "window.zTreeObj.selectNode(window.zTreeNode);");
- //点击编辑按钮,弹出 confirm
- WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_edit').get(0);");
- element.click();
- //第一次点击取消
- Alert alert = driver.switchTo().alert();
- System.out.println(alert.getText());
- alert.dismiss();
- element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_input').get(0);");
- assertNull(element);
- //点击编辑按钮,弹出 confirm
- element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_edit').get(0);");
- element.click();
- //第二次点击确定
- alert = driver.switchTo().alert();
- alert.accept();
- element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_input').get(0);");
- assertNotNull(element);
- //修改name
- for (int i=0, j=element.getAttribute("value").length(); i<j; i++) {
- element.sendKeys(Keys.BACK_SPACE);
- }
- element.sendKeys(Keys.RETURN);
- //确定 提示信息
- alert = driver.switchTo().alert();
- alert.accept();