1. 在已加载了JQuery的页面上可以直接使用JQuery选择器 例如www.网站,如果我们想定位红框中导航栏中的偶数为就可以使用jquery的伪选择器:even
![WebDriver中使用JQuery选择器](http://image69.360doc.com/DownloadImg/2014/03/0110/39517557_1.jpg)
具体实现如下 01 | package com.example.tests; |
02 | import static org.junit.Assert.*; |
05 | import org.openqa.selenium.*; |
06 | import org.openqa.selenium.ie.InternetExplorerDriver; |
09 | WebDriver driver = new InternetExplorerDriver(); |
10 | JavascriptExecutor jse = (JavascriptExecutor)driver; |
12 | public void jQueryTest() { |
13 | driver.get( "http://www./" ); |
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()); |
2. 另一种情况就是页面没有另载jQuery,我们需要先 判断再自已手动注入,以百度为例,百度首页是没有加载的01 | package com.example.tests; |
03 | import static org.junit.Assert.*; |
06 | import org.openqa.selenium.*; |
07 | import org.openqa.selenium.ie.InternetExplorerDriver; |
10 | WebDriver driver = new InternetExplorerDriver(); |
11 | JavascriptExecutor jse = (JavascriptExecutor) driver; |
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() + "、" ); |
25 | private void injectjQueryIfNeeded() { |
31 | public Boolean jQueryLoaded() { |
34 | loaded = (Boolean) jse.executeScript( "return " + "jQuery()!=null" ); |
35 | } catch (WebDriverException e) { |
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);" ); |
|