`

WebDriver中使用JQuery选择器

 
阅读更多

本文转载自open经验库:原文链接
 1.在已加载了JQuery的页面上可以直接使用JQuery选择器

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

具体实现如下

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);"); 
    } 
}

 

 

分享到:
评论

相关推荐

    Selenium.WebDriver.Extensions:Selenium WebDriver的扩展,包括jQuerySizzle选择器支持

    Selenium WebDriver的扩展包括jQuery / Sizzle选择器支持。 产品特点 主要 支持嵌套选择器 易于设置:安装NuGet软件包并开始与您现有的Selenium解决方案一起使用 通过与Appveyor的持续集成设置,单元和集成测试以及...

    Selenium WebDriver精讲

    - 使用jQuery选择器定位元素。 - 利用jQuery修改DOM结构。 #### 十一、fireevent的替代方案 第十一章提供了一些fireevent方法的替代方案。在某些情况下,直接触发事件可能不如预期那样工作,因此了解其他的事件...

    分析网页对网页元素的获取方法提供参考

    使用`querySelector`和`querySelectorAll`结合CSS选择器可以精确地定位到目标元素。 3. **jQuery库**:jQuery简化了JavaScript的DOM操作,提供了如`$("#id")`, `$(".class")`等简洁的语法来获取元素。此外,jQuery...

    【python-Web自动化-07课-文件上传和日期控件】

    在这个课程中,你将学习到如何编写Python脚本来处理各种Web页面上的文件上传和日期选择器,从而提升你的Web自动化测试技能。通过实践和理解这些概念,你将能够更有效地自动化测试包含此类交互的Web应用程序,提高...

    前端项目-FuncUnit.zip

    开发者可以利用熟悉的jQuery选择器和方法来定位页面元素,编写测试脚本。 3. **断言库**:FuncUnit提供了丰富的断言函数,如`F.attachments()`, `F.exists()`, `F.text()`, `F.val()`等,用于检查页面状态和元素...

    前端开源库-selenium-query

    在使用Selenium Query时,我们可以用CSS选择器来选取DOM元素,就像在jQuery中那样。例如,`qs('#elementId')` 就可以获取到ID为`elementId`的元素。此外,它还支持链式调用,如`qs('div').siblings().eq(1)`,这使得...

    Selenium 新手F&Q

    4. **通过CSS选择器定位:** CSS选择器语法更简洁,易于阅读。 5. **通过DOM模型定位:** 直接访问DOM树中的节点。 6. **通过链接文本定位:** 用于定位超链接。 7. **通过jQuery定位:** 利用jQuery的强大功能进行...

    python + selenium +pyquery 爬虫 爬取 1688详情图片 阿里巴巴详情图片 与标题 下载图片并进行压缩 仅供学习交流使用 .zip

    通过CSS选择器或jQuery式的链式调用来找到商品标题和图片URL。 5. **图片下载**:对每个找到的图片URL,使用Python的`requests`库下载图片到本地,并保存到特定目录。 6. **图片压缩**:可以使用第三方库如`Pillow...

    采集网页信息的python模块

    在`setup_collection`文件中,可以创建一个BeautifulSoup对象,然后通过选择器或方法找到特定的HTML元素,提取所需信息。 2. **requests**:这是Python中用于发送HTTP请求的核心库。通过requests库,我们可以轻松地...

    新人如何入门和学习软件测试.rar

    学习选择器的使用,如类选择器、ID选择器,以及盒模型、定位和浮动等概念。理解CSS3的新特性,如响应式设计,将有助于进行更精细的UI测试。 5. **掌握js的基本用法**:JavaScript是网页动态效果和交互的核心语言。...

    网页模拟点击

    例如,通过CSS选择器或XPath表达式找到特定按钮,然后调用click()方法实现模拟点击。 三、Puppeteer Puppeteer是Google Chrome团队开发的一个Node.js库,它提供了一组高级API来控制Chromium或Chrome浏览器。...

    cleartext按顺序遍历网页上所有控件

    另一种方法是使用CSS选择器或XPath表达式,按照特定规则选择控件。 5. **ClearText.cs**:根据文件名推测,这可能是一个C#代码文件,用于实现上述的遍历和处理网页控件的功能。在C#中,可以使用`WebBrowser`控件或...

    python爬虫学习记录

    # 使用CSS选择器 titles = soup.select('.title') for title in titles: print(title.text) ``` 4. **PyQuery**: 类似jQuery的Python库,用于方便地操作DOM。 - **遍历**:遍历DOM节点。 - **获取信息**:...

    python按综合、销量排序抓取100页的淘宝商品列表信息

    示例代码中展示了如何使用CSS选择器来定位这些元素。 5. 异常处理: 任何网络爬虫都可能会遇到网络不稳定、页面元素无法定位等问题,这些问题会导致爬虫程序异常。因此,在编写爬虫代码时,加入异常处理非常重要,...

    scraping:尝试使用其他工具进行网页抓取

    - **jQuery-like Selectors**:一些库,如Cheerio和JSDOM,提供了类似jQuery的API,使得在Node.js中使用选择器更加方便。 在实际应用中,我们还需要注意一些其他问题,如反爬策略(如User-Agent切换、验证码解决、...

    编译好的arm版的phantomjs2.1.1二进制包

    这个版本包含了许多改进和修复,例如对WebGL的支持,更完善的CSS3选择器,以及对HTML5特性的增强。此外,它还提供了API,可以方便地与各种JavaScript库集成,如jQuery和Selenium WebDriver。 在下载并解压这个二...

    基于Geb的Web自动化测试的原理与实践

    jQuery选择器用于高效定位HTML元素,而页面对象模型则将这些元素映射为可操作的对象,提高了代码的可读性和维护性。测试库支持与Spock、JUnit、TestNG等流行测试框架的集成,允许测试人员选择熟悉的测试语法。所有...

    Selenium Design Patterns and Best Practices 最新 原版

    - **高级定位策略**:探索不同的定位策略,如绝对路径、相对路径、CSS选择器和XPath等。 ##### 4. **重构测试** - **DRY原则**:即“不要重复自己”(Don't Repeat Yourself),用于减少代码冗余。 - **设置和清理...

Global site tag (gtag.js) - Google Analytics