• Selenium 2.0 WebDriver 自动化测试 使用教程 实例教程 API快速参考


     Selenium 2.0 WebDriver 自动化测试 使用教程 实例教程 API快速参考

    //System.setProperty("webdriver.firefox.bin", "E:/firefox/firefox.exe");
    //FirefoxDriver dr = new FirefoxDriver();

    ============ Selenium 2.0 WebDriver API  Demo ==========

      1. package example;  
      2.   
      3. import org.openqa.selenium.By;  
      4. import org.openqa.selenium.WebDriver;  
      5. import org.openqa.selenium.WebElement;  
      6. import org.openqa.selenium.chrome.ChromeDriver;  
      7. import org.openqa.selenium.support.ui.ExpectedCondition;  
      8. import org.openqa.selenium.support.ui.WebDriverWait;  
      9.   
      10. import util.Log;  
      11. import util.SeleniumUtil;  
      12.   
      13. public class TestAllInOne {  
      14.     public static final String BASE_URL = "http://www.baidu.com";  
      15.   
      16.     public static void main(String[] args) throws Exception {  
      17.         System.setProperty("webdriver.chrome.driver", "E:/0down/selenium/chromedriver.exe");  
      18.           
      19.         //打开firefox  
      20.         ChromeDriver dr = new ChromeDriver();  
      21.           
      22.         //访问页面  
      23.         dr.get(BASE_URL);  
      24. //      dr.navigate().to(BASE_URL);//与dr.get()效果相同  
      25. //      dr.navigate().forward();//让浏览器前进一步  
      26. //      dr.navigate().back();//让浏览器后退一步  
      27.         Log.Info(dr.getPageSource());  
      28.           
      29.         //等待页面加载完毕,直到条件满足  
      30.         (new WebDriverWait(dr, 10)).until(new ExpectedCondition<Boolean>() {  
      31.             public Boolean apply(WebDriver dr) {  
      32.                 Log.Info("web driver wait...");  
      33.                 int index = dr.getPageSource().indexOf("京ICP证030173号");  
      34.                 if(index != -1){  
      35.                     Log.Info("web driver wait, true...");  
      36.                     return true;  
      37.                 }else{  
      38.                     Log.Info("web driver wait, false...");  
      39.                     return false;  
      40.                 }  
      41.             }  
      42.         });  
      43.           
      44.         //等待页面加载完毕,直到条件满足,一个while循环,也挺简单的吧  
      45.         /* 
      46.         while(true){ 
      47.              Log.Info("wait for..."); 
      48.             int index = dr.getPageSource().indexOf("京ICP证030173号"); 
      49.             if(index != -1){ 
      50.                 Log.Info("wait for, true..."); 
      51.                 break; 
      52.             } 
      53.             Thread.sleep(1 * 1000); 
      54.         }*/  
      55.           
      56.         //等待元素加载完成  
      57. //      (new WebDriverWait(dr, 10)).until(  
      58. //          ExpectedConditions.presenceOfElementLocated(By.id("kw"))  
      59. //      );  
      60.           
      61.         //等待元素加载完成,并可点击  
      62. //      WebDriverWait wait = new WebDriverWait(dr, 10);  
      63. //      wait.until(ExpectedConditions.elementToBeClickable(By.id("su")));  
      64.           
      65.         //全局性的影响,只要WebDriver不消失,每隔10秒检查元素是否加载完成,直到加载完成。  
      66. //      dr.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  
      67. //      dr.get("http://somedomain/url_that_delays_loading");  
      68. //      dr.findElement(By.id("myDynamicElement"));  
      69.           
      70. //      WebElement we = dr.findElement(By.id("kw"));  
      71. //      we.sendKeys("selenium");  
      72. //      we.click();  
      73.           
      74. //      dr.findElement(By.id("元素id"));//最常用  
      75. //      dr.findElement(By.className("class名称"));//比较常用  
      76. //      dr.findElement(By.tagName("tag名称"));//比较常用  
      77. //      dr.findElement(By.cssSelector("css选择器"));//比较常用  
      78. //      dr.findElement(By.name("元素的name属性"));//比较常用  
      79. //      dr.findElement(By.linkText("超链接的内容"));//不常用  
      80. //      dr.findElement(By.partialLinkText("超链接的部分内容"));//不常用  
      81. //      dr.findElement(By.xpath("xpath表达式"));//不常用  
      82.           
      83.         //1:用java从文本中读取jQuery,并用WebDriver加载jQuery  
      84.         SeleniumUtil.LoadAndExecuteJQuery(dr);  
      85.         //2:用WebDriver执行你写的jQuery代码,可以返回单个元素,也可以返回元素数组,或无返回值  
      86.         //执行你的jQuery代码,既然能执行自已的jQuery代码,就能做任何事情了  
      87.         dr.executeScript("$('#kw').val('selenium'); $('#kw').val($('#kw').val() + ' java');");  
      88.         //也可以用WebDriver API进行页面元素的操作  
      89.         WebElement el = dr.findElement(By.id("kw"));  
      90.         el.sendKeys("selenium java");  
      91.         dr.findElement(By.id("su")).click();  
      92.           
      93.         //WebDriver专用的select下接框处理类  
      94.         /* 
      95.         List<WebElement> elList = dr.findElements(By.tagName("select")); 
      96.         if(elList != null && elList.size() > 0){ 
      97.             Select select = new Select(elList.get(0)); 
      98.             select.deselectAll(); 
      99.             select.selectByVisibleText("Edam"); 
      100.             select.selectByIndex(1); 
      101.             select.selectByValue("10010"); 
      102.         }*/  
      103.           
      104.         //window和frame的切换  
      105.         /* 
      106.         dr.switchTo().window("xxName"); 
      107.         dr.switchTo().frame("xxName"); 
      108.         */  
      109.           
      110.         //浏览器自带的alert弹出框的处理  
      111.         /* 
      112.         Alert alert = dr.switchTo().alert(); 
      113.         if(alert != null){ 
      114.             alert.accept(); 
      115.             alert.dismiss(); 
      116.             alert.sendKeys("collonn"); 
      117.         }*/  
      118.           
      119.         /* 
      120.         //用jQuery查找一个元素 
      121.         WebElement wea = (WebElement)dr.executeScript("return $('#kw').get(0);"); 
      122.         //用jQuery查找一组元素 
      123.         List<WebElement> weaList = (List<WebElement>)dr.executeScript("return $('.stu_info').get();"); 
      124.         //返回Boolean 
      125.         Boolean flagB = (Boolean)dr.executeScript("return true;"); 
      126.         //返回Double 
      127.         Double flagD = (Double)dr.executeScript("return 12.12;"); 
      128.         //返回Long 
      129.         Long flagL = (Long)dr.executeScript("return 123;"); 
      130.         //返回String 
      131.         String flagS = (String)dr.executeScript("return 'collonn';"); 
      132.         //返回String数组 
      133.         List<String> flagSs = (List<String>)dr.executeScript("var ary = ['a', 'b', 'c']; return ary;"); 
      134.         */  
      135.           
      136.         //保存网面截图  
      137.         SeleniumUtil.TakeScreenshot(dr, null);  
      138.           
      139.         //关闭浏览器  
      140.         dr.quit();  
      141.     }  
      142.   
      143. }  
  • 相关阅读:
    C#XML操作详解
    浏览器检测JS代码(兼容目前各大主流浏览器)
    C# DataTable 详解
    MyEclipse设置java文件每行字符数
    springmvc,hibernate整合时候出现Cannot load JDBC driver class 'com.mysql.jdbc.Driver
    org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor
    hibernate使用注解生成表,有时无法生成数据表的原因
    rtthread STM32F4以太网
    STM32F4闹钟
    Keil MDK下如何设置非零初始化变量(转)
  • 原文地址:https://www.cnblogs.com/timssd/p/5101469.html
Copyright © 2020-2023  润新知