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 }
View Code
转载于:https://www.cnblogs.com/Ming8006/p/5719561.html
Selenium Web 自动化 - 如何找到元素相关推荐
- selenium web自动化判断页面元素加载完毕
主要方便以后用到时查阅,侵删! 三种等待方法: 1.强制等待sleep(xx) 强制等待,不管你浏览器是否加载完了,程序都得等待,时间一到,继续执行下面的代码,作为调试很有用,有时候也可以在代码里这样 ...
- Selenium Web 自动化 - Selenium常用API
Selenium Web 自动化 - Selenium常用API 2016-08-01 目录 1 对浏览器操作 1.1 用webdriver打开一个浏览器 1.2 最大化浏览器&关闭浏 ...
- Selenium Web 自动化 - 项目实战(三)
Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述 2 框架更改总览 3 框架更改详解 3.1 解析新增页面目录 3.2 解析新增测试用例目录 ...
- python web自动化元素定位_快速掌握Python Selenium Web自动化:三)在Selenium中定位查找网页元素的诸类方法...
使用Selenium进行自动化操作,首先要做的就是通过webdriver的get()方法打开一个URL链接. 在打开链接,完成页面加载之后,就可以通过Selenium提供的接口,在页面上进行各种操作了 ...
- Python+selenium Web自动化持续更新
保姆入门级Web自动化学习资料 前言 Web自动化环境搭建 软件准备 开始环境搭建 浏览器和驱动下载 谷歌浏览器驱动版本对应以及下载: edge浏览器驱动版本对应以及下载: ie浏览器驱动官方地址: ...
- python selenium - web自动化环境搭建
前提: 安装python环境. 参考另一篇博文:https://www.cnblogs.com/Simple-Small/p/9179061.html web自动化:实现代码驱动浏览器进行点点点的操作 ...
- python selenium下载图片_Python Selenium Web自动化上传/下载文件图文详解
情景: 在用selenium进行web页面自动化时,时不时会遇到上传附件的情况,常见的情况就是一个上传按钮,点击后弹出windows窗口,选择文件后上传,如下图1所示 图1 这种情况超出了seleni ...
- RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser
Selenium出来已经有很多年了,从最初的Selenium1到后来的Selenium2,也变得越来越成熟,而且也已经被很多公司广泛使用.Selenium发展的过程中,分了很多模块,这里我们主要介绍W ...
- python3 selenium web自媒体百家号企鹅号大鱼号acfun站,自动化上传视频以及经验总结分享
前言 大家好,我是最渣的黑客,这几天在写selenium web 自动化.如果一个UP主在做自媒体,剪辑好一个视频要上传多个平台,而这些平台还没有互相关联可以进行同步,这个时候上传视频的工作就成了一个 ...
最新文章
- select子查询多个字段_SQL复杂查询
- 通过图形界面配置Exchange2010 DAG
- EditorGridPanel的网格样式以及编辑属性设置
- C# Obsolete
- 一起来啃书——PHP看书
- 如何计算虚拟化vcpu_首次公开:腾讯云虚拟化技术原理及可用性提升实践
- Confluence 6 示例 - https://confluence.atlassian.com/
- ieee5节点系统图_存储系统的的关键技术之自精简技术
- 程序员35岁之后的职业发展
- 电脑芯片和服务器芯片,王思聪的服务器和我们的电脑有什么区别?
- [Python]利用ricequant获取上证指数以及所有股票历史价格数据
- jmeter ramup设置_Jmeter(2)基础知识
- android系统 通知管理,告别打扰 Android系统的通知管理
- Dependency-check
- 要穿上就总是和脚抱得紧紧
- <转>svn提示出错异常为remains in conflict
- git命令切换分支、更新分支
- fpga电平约束有什么作用_Xilinx FPGA的约束设计和时序分析总结
- NOAA气象数据下载攻略
- 故事,零落,,,,,
热门文章
- Partition分区及实例
- Spark Streaming VS Flink Streaming
- FFT [TPLY]
- 【读薄Effective Java】创建和销毁对象
- Java基础之this关键字的作用
- Java凝视Annotation
- router OS (ROS)命令中文手册
- 微信小程序的多选改变样式_微信小程序button选中改样式-实现单选/多选
- oracle idm suite,CorelDRAW Graphics Suite 2018官方英文试用版 离线直接安装 下载地址
- cef在android中使用_嵌入Chrome cef之完整版(本教程基于cef1)