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 }

View Code

转载于:https://www.cnblogs.com/Ming8006/p/5719561.html

Selenium Web 自动化 - 如何找到元素相关推荐

  1. selenium web自动化判断页面元素加载完毕

    主要方便以后用到时查阅,侵删! 三种等待方法: 1.强制等待sleep(xx) 强制等待,不管你浏览器是否加载完了,程序都得等待,时间一到,继续执行下面的代码,作为调试很有用,有时候也可以在代码里这样 ...

  2. Selenium Web 自动化 - Selenium常用API

    Selenium Web 自动化 - Selenium常用API 2016-08-01 目录 1 对浏览器操作   1.1 用webdriver打开一个浏览器   1.2 最大化浏览器&关闭浏 ...

  3. Selenium Web 自动化 - 项目实战(三)

    Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述 2 框架更改总览 3 框架更改详解   3.1 解析新增页面目录   3.2 解析新增测试用例目录 ...

  4. python web自动化元素定位_快速掌握Python Selenium Web自动化:三)在Selenium中定位查找网页元素的诸类方法...

    使用Selenium进行自动化操作,首先要做的就是通过webdriver的get()方法打开一个URL链接. 在打开链接,完成页面加载之后,就可以通过Selenium提供的接口,在页面上进行各种操作了 ...

  5. Python+selenium Web自动化持续更新

    保姆入门级Web自动化学习资料 前言 Web自动化环境搭建 软件准备 开始环境搭建 浏览器和驱动下载 谷歌浏览器驱动版本对应以及下载: edge浏览器驱动版本对应以及下载: ie浏览器驱动官方地址: ...

  6. python selenium - web自动化环境搭建

    前提: 安装python环境. 参考另一篇博文:https://www.cnblogs.com/Simple-Small/p/9179061.html web自动化:实现代码驱动浏览器进行点点点的操作 ...

  7. python selenium下载图片_Python Selenium Web自动化上传/下载文件图文详解

    情景: 在用selenium进行web页面自动化时,时不时会遇到上传附件的情况,常见的情况就是一个上传按钮,点击后弹出windows窗口,选择文件后上传,如下图1所示 图1 这种情况超出了seleni ...

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

    Selenium出来已经有很多年了,从最初的Selenium1到后来的Selenium2,也变得越来越成熟,而且也已经被很多公司广泛使用.Selenium发展的过程中,分了很多模块,这里我们主要介绍W ...

  9. python3 selenium web自媒体百家号企鹅号大鱼号acfun站,自动化上传视频以及经验总结分享

    前言 大家好,我是最渣的黑客,这几天在写selenium web 自动化.如果一个UP主在做自媒体,剪辑好一个视频要上传多个平台,而这些平台还没有互相关联可以进行同步,这个时候上传视频的工作就成了一个 ...

最新文章

  1. select子查询多个字段_SQL复杂查询
  2. 通过图形界面配置Exchange2010 DAG
  3. EditorGridPanel的网格样式以及编辑属性设置
  4. C# Obsolete
  5. 一起来啃书——PHP看书
  6. 如何计算虚拟化vcpu_首次公开:腾讯云虚拟化技术原理及可用性提升实践
  7. Confluence 6 示例 - https://confluence.atlassian.com/
  8. ieee5节点系统图_存储系统的的关键技术之自精简技术
  9. 程序员35岁之后的职业发展
  10. 电脑芯片和服务器芯片,王思聪的服务器和我们的电脑有什么区别?
  11. [Python]利用ricequant获取上证指数以及所有股票历史价格数据
  12. jmeter ramup设置_Jmeter(2)基础知识
  13. android系统 通知管理,告别打扰 Android系统的通知管理
  14. Dependency-check
  15. 要穿上就总是和脚抱得紧紧
  16. <转>svn提示出错异常为remains in conflict
  17. git命令切换分支、更新分支
  18. fpga电平约束有什么作用_Xilinx FPGA的约束设计和时序分析总结
  19. NOAA气象数据下载攻略
  20. 故事,零落,,,,,

热门文章

  1. Partition分区及实例
  2. Spark Streaming VS Flink Streaming
  3. FFT [TPLY]
  4. 【读薄Effective Java】创建和销毁对象
  5. Java基础之this关键字的作用
  6. Java凝视Annotation
  7. router OS (ROS)命令中文手册
  8. 微信小程序的多选改变样式_微信小程序button选中改样式-实现单选/多选
  9. oracle idm suite,CorelDRAW Graphics Suite 2018官方英文试用版 离线直接安装 下载地址
  10. cef在android中使用_嵌入Chrome cef之完整版(本教程基于cef1)