yyyyyyyyyyyyyyyyyyyy

博客园 首页 新随笔 联系 订阅 管理

 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. }  
posted on 2016-01-05 10:24  xxxxxxxx1x2xxxxxxx  阅读(151)  评论(0编辑  收藏  举报