前面的学习已经让我们可以轻松的运行js、点击节点,下面该学习如何控制 alert、confirm 和 弹出窗口这些了


【1、如何处理 confirm 和 alert】

处理 confirm、alert 其实很简单,只需要利用 WebDriver 的 switchTo().alert() 方法就可以轻松切换到 alert 对象 Alert,进行控制。

我们直接利用 高级增删改查 的Demo 测试 alert 和 confirm,顺便还使用 sendKeys 进行文字录入的操作


 

Java代码 和我一起学 Selenium WebDriver(5)——基础篇 _基础 和我一起学 Selenium WebDriver(5)——基础篇 _一起学_02
  1. package lesson5;
  2.  
  3. import static org.junit.Assert.*;
  4.  
  5. import org.junit.AfterClass;
  6. import org.junit.BeforeClass;
  7. import org.junit.Test;
  8. import org.openqa.selenium.Alert;
  9. import org.openqa.selenium.JavascriptExecutor;
  10. import org.openqa.selenium.Keys;
  11. import org.openqa.selenium.WebDriver;
  12. import org.openqa.selenium.WebElement;
  13. import org.openqa.selenium.firefox.FirefoxDriver;
  14. import org.openqa.selenium.support.ui.ExpectedCondition;
  15. import org.openqa.selenium.support.ui.WebDriverWait;
  16.  
  17. public class ExampleForAlert {
  18.  
  19. static WebDriver driver;
  20.  
  21. @BeforeClass
  22. public static void init() {
  23. System.out.println("init...");
  24. // 如果你的 FireFox 没有安装在默认目录,那么必须在程序中设置
  25. System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe");
  26. // 创建一个 FireFox 的浏览器实例
  27. driver = new FirefoxDriver();
  28. }
  29.  
  30. @Test
  31. public void test() {
  32. // 让浏览器访问 zTree Demo
  33. driver.get("http://www.ztree.me/v3/demo/cn/exedit/edit_super.html");
  34.  
  35. // 等待 zTree 初始化完毕,Timeout 设置10秒
  36. try {
  37. (new WebDriverWait(driver, 10, 500)).until(new ExpectedCondition<Boolean>() {
  38. public Boolean apply(WebDriver d) {
  39. WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#treeDemo li').get(0);");
  40. return element != null;
  41. }
  42. });
  43.  
  44. } catch(Exception e) {
  45. e.printStackTrace();
  46. }
  47.  
  48. ((JavascriptExecutor)driver).executeScript("window.zTreeObj = $.fn.zTree.getZTreeObj('treeDemo');"
  49. + "window.zTreeNode = window.zTreeObj.getNodes()[0];"
  50. + "window.zTreeObj.selectNode(window.zTreeNode);");
  51.  
  52. //点击编辑按钮,弹出 confirm
  53. WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_edit').get(0);");
  54. element.click();
  55.  
  56. //第一次点击取消
  57. Alert alert = driver.switchTo().alert();
  58. System.out.println(alert.getText());
  59. alert.dismiss();
  60. element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_input').get(0);");
  61. assertNull(element);
  62.  
  63. //点击编辑按钮,弹出 confirm
  64. element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_edit').get(0);");
  65. element.click();
  66.  
  67. //第二次点击确定
  68. alert = driver.switchTo().alert();
  69. alert.accept();
  70. element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_input').get(0);");
  71. assertNotNull(element);
  72.  
  73. //修改name
  74. for (int i=0, j=element.getAttribute("value").length(); i<j; i++) {
  75. element.sendKeys(Keys.BACK_SPACE);
  76. }
  77. element.sendKeys(Keys.RETURN);
  78.  
  79. //确定 提示信息
  80. alert = driver.switchTo().alert();
  81. alert.accept();
  82.