WebDriver中使用JQuery選擇器

jopen 11年前發布 | 69K 次閱讀 Selenium 測試工具 webdriver

1. 在已加載了JQuery的頁面上可以直接使用JQuery選擇器

例如www.jquery.com網站,如果我們想定位紅框中導航欄中的偶數為就可以使用jquery的偽選擇器:even



 WebDriver中使用JQuery選擇器

具體實現如下

    package com.example.tests;  
    import static org.junit.Assert.*;  
    import java.util.*;  
    import org.junit.*;  
    import org.openqa.selenium.*;  
    import org.openqa.selenium.ie.InternetExplorerDriver;  

    public class test {  
        WebDriver driver = new InternetExplorerDriver();  
        JavascriptExecutor jse = (JavascriptExecutor)driver;  
        @Test  
        public void jQueryTest() {   
            driver.get("http://www.jquery.com/");  
                //在executeScript中調用jQuery.find(jquerySelector);  
                 List<WebElement> elements =   
                         (List<WebElement>)jse.executeScript("return jQuery.find" +"('.menu-item a:even')");     
                 assertEquals(3,elements.size());  
                 assertEquals("Download",elements.get(0).getText());     
                 assertEquals("Blog",elements.get(1).getText());   
                 assertEquals("Browser Support",elements.get(2).getText());   
                driver.close();  
        }  
    }  
2. 另一種情況就是頁面沒有另載jQuery,我們需要先 判斷再自已手動注入,以百度為例,百度首頁是沒有加載的
    package com.example.tests;  

    import static org.junit.Assert.*;  
    import java.util.*;  
    import org.junit.*;  
    import org.openqa.selenium.*;  
    import org.openqa.selenium.ie.InternetExplorerDriver;  

    public class Selenium2{  
        WebDriver driver = new InternetExplorerDriver();  
        JavascriptExecutor jse = (JavascriptExecutor) driver;  

        @Test  
        public void jQueryTest() {  
            driver.get("http://www.baidu.com/");  
            injectjQueryIfNeeded();  
            List<WebElement> elements = (List<WebElement>) jse  
                    .executeScript("return jQuery.find('#nv a')");  
            assertEquals(7, elements.size()); // 驗證超鏈接的數量  
            for (int i = 0; i < elements.size(); i++) {  
                System.out.print(elements.get(i).getText() + "、");  
            }  
            driver.close();  
        }  
        private void injectjQueryIfNeeded() {  
            if (!jQueryLoaded())  
                injectjQuery();  
        }  

        // 判斷是已加載jQuery  
        public Boolean jQueryLoaded() {  
            Boolean loaded;  
            try {  
                loaded = (Boolean) jse.executeScript("return " + "jQuery()!=null");  
            } catch (WebDriverException e) {  
                loaded = false;  
            }  
            return loaded;  
        }  

        // 通過注入jQuery  
        public void injectjQuery() {  
            jse.executeScript(" var headID = "  
                    + "document.getElementsByTagName(\"head\")[0];"  
                    + "var newScript = document.createElement('script');"  
                    + "newScript.type = 'text/javascript';" + "newScript.src = "  
                    + "'http://ajax.googleapis.com/ajax/"  
                    + "libs/jquery/1.7.2/jquery.min.js';"  
                    + "headID.appendChild(newScript);");  
        }  
    }  

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!