分享

WebDriver中使用JQuery选择器

 liuchangxin81 2014-05-07
  1. package com.example.tests;  
  2. import static org.junit.Assert.*;  
  3. import java.util.*;  
  4. import org.junit.*;  
  5. import org.openqa.selenium.*;  
  6. import org.openqa.selenium.ie.InternetExplorerDriver;  
  7.   
  8. public class test {  
  9.     WebDriver driver = new InternetExplorerDriver();  
  10.     JavascriptExecutor jse = (JavascriptExecutor)driver;  
  11.     @Test  
  12.     public void jQueryTest() {   
  13.         driver.get("http://www./");  
  14.             //在executeScript中调用jQuery.find(jquerySelector);  
  15.              List<WebElement> elements =   
  16.                      (List<WebElement>)jse.executeScript("return jQuery.find" +"('.menu-item a:even')");     
  17.              assertEquals(3,elements.size());  
  18.              assertEquals("Download",elements.get(0).getText());     
  19.              assertEquals("Blog",elements.get(1).getText());   
  20.              assertEquals("Browser Support",elements.get(2).getText());   
  21.             driver.close();  
  22.     }  
  23. }  

2. 另一种情况就是页面没有另载jQuery,我们需要先 判断再自已手动注入,以百度为例,百度首页是没有加载的

  1. package com.example.tests;  
  2.   
  3. import static org.junit.Assert.*;  
  4. import java.util.*;  
  5. import org.junit.*;  
  6. import org.openqa.selenium.*;  
  7. import org.openqa.selenium.ie.InternetExplorerDriver;  
  8.   
  9. public class Selenium2{  
  10.     WebDriver driver = new InternetExplorerDriver();  
  11.     JavascriptExecutor jse = (JavascriptExecutor) driver;  
  12.   
  13.     @Test  
  14.     public void jQueryTest() {  
  15.         driver.get("http://www.baidu.com/");  
  16.         injectjQueryIfNeeded();  
  17.         List<WebElement> elements = (List<WebElement>) jse  
  18.                 .executeScript("return jQuery.find('#nv a')");  
  19.         assertEquals(7, elements.size()); // 验证超链接的数量  
  20.         for (int i = 0; i < elements.size(); i++) {  
  21.             System.out.print(elements.get(i).getText() + "、");  
  22.         }  
  23.         driver.close();  
  24.     }  
  25.     private void injectjQueryIfNeeded() {  
  26.         if (!jQueryLoaded())  
  27.             injectjQuery();  
  28.     }  
  29.   
  30.     // 判断是已加载jQuery  
  31.     public Boolean jQueryLoaded() {  
  32.         Boolean loaded;  
  33.         try {  
  34.             loaded = (Boolean) jse.executeScript("return " + "jQuery()!=null");  
  35.         } catch (WebDriverException e) {  
  36.             loaded = false;  
  37.         }  
  38.         return loaded;  
  39.     }  
  40.   
  41.     // 通过注入jQuery  
  42.     public void injectjQuery() {  
  43.         jse.executeScript(" var headID = "  
  44.                 + "document.getElementsByTagName(\"head\")[0];"  
  45.                 + "var newScript = document.createElement('script');"  
  46.                 + "newScript.type = 'text/javascript';" + "newScript.src = "  
  47.                 + "'http://ajax./ajax/"  
  48.                 + "libs/jquery/1.7.2/jquery.min.js';"  
  49.                 + "headID.appendChild(newScript);");  
  50.     }  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多