Selenium Web 自动化 - 如何找到元素

Selenium Web 自动化 - 如何找到元素

2016-07-29

1. 什么是元素?

元素:http://www.w3school.com.cn/html/html_elements.asp

2. 定位方式解析

Selenium WebDriver 提供一个先进的技术来定位 web 页面元素。Selenium 功能丰富的API 提供了多个定位策略如:Name、ID、CSS 选择器、XPath 等等,如下图所示:

一般会用ID来定位,因为它是唯一的,xpath也比较通用,火狐浏览器插件:firepath和firebug是快速给出元素的xpath。

另外JQuery也是很好的定位方法

2.1 通过jQuery来定位元素

jQuery提供了find方法,来快速查找页面元素,但此方法也仅限使用了jquery库的页面。

2.1.1 如何判别页面使用了jQuery

打开火狐浏览器,输入谷歌地址:https://www.google.com.hk/,按F12调出控制台,接着在最下面的箭头处输入:“jQuery”,然后回车:

  • 若控制台会返回:“function(e, t)” 这就表明此页面适用了jQuery库。
  • 若控制台会返回错误提示:ReferenceError:jQuery is not defined 这就证明当前的页面没有适用到jQuery库

代码如下:

 1 package WayToFindElement;
 2
 3 import java.util.List;
 4 import org.openqa.selenium.JavascriptExecutor;
 5 import org.openqa.selenium.WebDriver;
 6 import org.openqa.selenium.WebElement;
 7 import org.openqa.selenium.firefox.FirefoxDriver;
 8 import org.testng.Assert;
 9 import org.openqa.selenium.WebDriverException;
10
11 public class FindByJquery {
12
13     public static void main(String[] args) {
14         TestNotLoadJquery();
15     }
16
17     private static void TestLoadedJquery() {
18         WebDriver driver = new FirefoxDriver();
19         driver.manage().window().maximize();
20         JavascriptExecutor jsExecutor = (JavascriptExecutor)driver;
21         driver.get("https://www.baidu.com");
22
23         List<WebElement> webElements = (List<WebElement>) jsExecutor.executeScript("return jQuery.find(‘a.mnav‘)");
24         Assert.assertEquals(webElements.size(),6);
25         Assert.assertEquals(webElements.get(2).getText(), "hao123");
26         driver.quit();
27     }
28
29     private static void TestNotLoadJquery()
30     {
31         WebDriver driver = new FirefoxDriver();
32         driver.manage().window().maximize();
33         JavascriptExecutor jsExecutor = (JavascriptExecutor)driver;
34         driver.get("http://www.2345.com/");
35         if(!jQueryLoaded(jsExecutor)){
36             //如果检测到没有jquery库就执行注入操作
37             inJectJquery(jsExecutor);
38         }
39         //找到搜索一下按钮 元素
40         List<WebElement> searchButton =  (List<WebElement>) jsExecutor.executeScript("return jQuery.find(‘input.sch_btn‘)");
41         //验证按钮的文本
42         Assert.assertEquals(searchButton.get(0).getAttribute("value"), "搜索一下");
43         driver.quit();
44     }
45
46     /**注入jQuery支持*/
47     public static void inJectJquery(JavascriptExecutor jsExecutor){
48         jsExecutor.executeScript("var headID = document.getElementsByTagName(\"head\")[0];"
49                 + "var newScript = document.createElement(‘script‘);"
50                 + "newScript.type = ‘text/Javascript‘;"
51                 + "newScript.src=\"http://code.jquery.com/jquery-2.1.4.min.js\";"
52                 + "headID.appendChild(newScript);");
53     }
54
55
56     /**判断当前页面是否使用了jQuery*/
57     public static  Boolean jQueryLoaded(JavascriptExecutor jsExecutor){
58         Boolean loaded = true;
59         try{
60             loaded = (Boolean) jsExecutor.executeScript("return jQuery()! = null");
61         }catch(WebDriverException e){
62             loaded = false;
63         }
64
65         return loaded;
66     }
67 }

时间: 2024-10-26 08:44:40

Selenium Web 自动化 - 如何找到元素的相关文章

Selenium Web 自动化

1 Selenium Web 自动化 - Selenium(Java)环境搭建 2 Selenium Web 自动化 - 如何找到元素 3 Selenium Web 自动化 - Selenium常用API 4 Selenium Web 自动化 - 项目实战环境准备 5 Selenium Web 自动化 - 项目实战(一) 6 Selenium Web 自动化 - 项目实战(二) 7 Selenium Web 自动化 - 项目实战(三)

Selenium Web 自动化 - Selenium常用API

Selenium Web 自动化 - Selenium常用API 2016-08-01 1 WebElement相关方法2 iFrame的处理3 操作下拉选择框4 处理Alert5 处理浏览器弹出的新窗口6 执行JS脚本7 等待元素加载8 模拟键盘操作9 设置浏览器窗口大小10 上传文件11 Selenium处理HTML5 1 WebElement相关方法 Method   Summary void clear() If   this element is a text entry elemen

Selenium Web 自动化 - Selenium(Java)环境搭建

Selenium Web 自动化 - Selenium(Java)环境搭建 2016-07-29 第1章 Selenium环境搭建 1.1 下载JDK JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 1.2 安装和配置JDK 安装目录尽量不要有空格  D:\Java\jdk1.8.0_91; D:\Java\jre8 设置环境变量: “我的电脑”->右键->“

RobotFramework自动化测试框架-Selenium Web自动化(三)关于在RobotFramework中如何使用Selenium很全的总结(下)

本文紧接着RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)继续分享RobotFramework中如何使用Selenium进行自动化测试. 本文章节目录: 1.Get Value 2.Get Webelements和Get Webelement 3.Get Window Titles 4.Go Back 和 Go To 5.Get List Items 6.Get Selected List

RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser

Selenium出来已经有很多年了,从最初的Selenium1到后来的Selenium2,也变得越来越成熟,而且也已经被很多公司广泛使用.Selenium发展的过程中,分了很多模块,这里我们主要介绍Webdriver,Webdriver已经被很多浏览器所兼容.WebDriver在自动化脚本和浏览器之间充当的角色和之前介绍的Appium很像. 由于现在很多的浏览器都已经主动支持和兼容了WebDriver,所以Webdriver在启动后,会确认浏览器的native component是否存在可用而且

WEB自动化(Python+selenium)的API

在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家                                                                                                                     WEB自动化测试培训2 课程目的 一.Webdriver API 的使用 课程内容 1    控制浏览器 Selenium 主要提供的是操作页面上各

web自动化——元素定位

我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素. 元素定位的8种方法: id.name.class.tag.link.partail_link.xpath.css_selector 1.id定位: find_element_by_id() 从上面定位到的搜索框属性中,有个id="kw"的属性,我们可以通过这个id定位到这个搜索框 代码: # coding = utf-8 from time import sleep from sel

基于Selenium的web自动化框架

1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Selenium WebDriver 和Selenium Grid: Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,python等)的形式导出成测试用例. Selenium WebDriver:提供Web自动化所需的API,主要用作浏览

Python+selenium+eclipse执行web自动化(三)浏览器frame及element定位

WEB页面上frame及element定位,需要先了解页面HTML结构,如下图所示: 在Firefox或者IE中按F12按键调用开发人员工具,在HTML界面可以看到页面的大体结构(也可参考http://wenku.baidu.com/view/f7f7514e763231126edb117a.html?re=view学习更多HTML内容).首先是HTML底层,然后是head头文件和body主体文件.在此界面可使用箭头图形按钮来快速获取某个控件的对应信息,如所在frame的名称.控件的名称.ID等