分享

WebDriver中使用JQuery选择器_java 版

 昵称597197 2014-03-01

1. 在已加载了JQuery的页面上可以直接使用JQuery选择器

例如www.网站,如果我们想定位红框中导航栏中的偶数为就可以使用jquery的伪选择器:even



 WebDriver中使用JQuery选择器

具体实现如下

01packagecom.example.tests; 
02import staticorg.junit.Assert.*; 
03importjava.util.*; 
04importorg.junit.*; 
05importorg.openqa.selenium.*; 
06importorg.openqa.selenium.ie.InternetExplorerDriver; 
07   
08public classtest { 
09    WebDriver driver = newInternetExplorerDriver(); 
10    JavascriptExecutor jse = (JavascriptExecutor)driver; 
11    @Test 
12    public voidjQueryTest() {  
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,我们需要先 判断再自已手动注入,以百度为例,百度首页是没有加载的
01packagecom.example.tests; 
02   
03import staticorg.junit.Assert.*; 
04importjava.util.*; 
05importorg.junit.*; 
06importorg.openqa.selenium.*; 
07importorg.openqa.selenium.ie.InternetExplorerDriver; 
08   
09public classSelenium2{ 
10    WebDriver driver = newInternetExplorerDriver(); 
11    JavascriptExecutor jse = (JavascriptExecutor) driver; 
12   
13    @Test 
14    public voidjQueryTest() { 
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 (inti = 0; i < elements.size(); i++) { 
21            System.out.print(elements.get(i).getText() + "、"); 
22        
23        driver.close(); 
24    
25    private voidinjectjQueryIfNeeded() { 
26        if(!jQueryLoaded()) 
27            injectjQuery(); 
28    
29   
30    // 判断是已加载jQuery 
31    publicBoolean jQueryLoaded() { 
32        Boolean loaded; 
33        try
34            loaded = (Boolean) jse.executeScript("return ""jQuery()!=null"); 
35        catch(WebDriverException e) { 
36            loaded = false
37        
38        returnloaded; 
39    
40   
41    // 通过注入jQuery 
42    public voidinjectjQuery() { 
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    
51}

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多