WebDriver中使用JQuery选择器

发表于:2015-2-16 09:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:open经验库    来源:51Testing软件测试网论坛

  1.在已加载了JQuery的页面上可以直接使用JQuery选择器
  例如www.jquery.com网站,如果我们想定位红框中导航栏中的偶数为就可以使用jquery的伪选择器:even
  WebDriver中使用JQuery选择器
  具体实现如下
packagecom.example.tests;
importstaticorg.junit.Assert.*;
importjava.util.*;
importorg.junit.*;
importorg.openqa.selenium.*;
importorg.openqa.selenium.ie.InternetExplorerDriver;
publicclasstest{
WebDriverdriver=newInternetExplorerDriver();
JavascriptExecutorjse=(JavascriptExecutor)driver;
@Test
publicvoidjQueryTest(){
driver.get("http://www.jquery.com/");
//在executeScript中调用jQuery.find(jquerySelector);
List<WebElement>elements=
(List<WebElement>)jse.executeScript("returnjQuery.find"+"('.menu-itema:even')");
assertEquals(3,elements.size());
assertEquals("Download",elements.get(0).getText());
assertEquals("Blog",elements.get(1).getText());
assertEquals("BrowserSupport",elements.get(2).getText());
driver.close();
}
}
  2.另一种情况就是页面没有另载jQuery,我们需要先判断再自已手动注入,以百度为例,百度首页是没有加载的
packagecom.example.tests;
importstaticorg.junit.Assert.*;
importjava.util.*;
importorg.junit.*;
importorg.openqa.selenium.*;
importorg.openqa.selenium.ie.InternetExplorerDriver;
publicclassSelenium2{
WebDriverdriver=newInternetExplorerDriver();
JavascriptExecutorjse=(JavascriptExecutor)driver;
@Test
publicvoidjQueryTest(){
driver.get("http://www.baidu.com/");
injectjQueryIfNeeded();
List<WebElement>elements=(List<WebElement>)jse
.executeScript("returnjQuery.find('#nva')");
assertEquals(7,elements.size());//验证超链接的数量
for(inti=0;i<elements.size();i++){
System.out.print(elements.get(i).getText()+"、");
}
driver.close();
}
privatevoidinjectjQueryIfNeeded(){
if(!jQueryLoaded())
injectjQuery();
}
//判断是已加载jQuery
publicBooleanjQueryLoaded(){
Booleanloaded;
try{
loaded=(Boolean)jse.executeScript("return"+"jQuery()!=null");
}catch(WebDriverExceptione){
loaded=false;
}
returnloaded;
}
//通过注入jQuery
publicvoidinjectjQuery(){
jse.executeScript("varheadID="
+"document.getElementsByTagName(\"head\")[0];"
+"varnewScript=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);");
}
}
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号