Selenium原理及元素定位方法(JAVA)
Selenium原理
1、Selenium 1.0(Selenium RC):
早期的Selenium使用的是Javascript注入技术与浏览器打交道,需要Selenium RC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript。因为Javascript可以获取并调用页面的任何元素,自如的进行操作,所以才实现了Selenium的目的:自动化Web操作
2、Selenium 2.x
当Selenium2.x 提出了WebDriver的概念之后,它提供了完全另外的一种方式与浏览器交互。那就是利用浏览器原
生的API,封装成一套更加面向对象的Selenium WebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器
本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)。由于使用的是浏览器原生的API,速度大大
提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂
商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分浏览器厂商不同,而提
供不同的实现。例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等。(甚至包含了AndroidDriver和iOS WebDriver)
参考文章:https://blog.csdn.net/ant_ren/article/details/7968582
Selenium元素定位方法(八种)
1、通过Name定位元素
1.1、方法:By.name("name的值")介绍:通过元素的name属性来定位元素(但一般name属性并不是唯一的)示例: driver.findElement(By.name("")); 1.2、方法:By.tagName("tagName的值");介绍:通过元素的标签名称来定位元素示例:driver.findElement(By.tagName(""));1.3、方法:By.className("className的值");介绍:通过元素的class属性来进行定位(但一般name属性并不是唯一的)示例:driver.findElement(By.className(""))备注:该方法中的参数只有一个,所以若网页中class的属性有多个,只能选取其中一个来进行定位
2、通过ID定位元素
2.1、方法:By.id("id的值")介绍:通过元素的id来进行定位示例:driver.findElement(By.id("id的值"));备注:元素的id是唯一的,所以首选By.id方法来进行元素的定位;但有的元素没有id,就需要选择其他的方法来进行元素的定位
3、通过LinkText定位元素
3.1、方法:By.linkText("链接的全部内容")介绍:作用于a标签,匹配链接的全部文字内容示例:driver.findElement(By.linkText("车辆管理"));3.2、方法:By.partiallinkText("链接的部分内容")介绍:作用于a标签,匹配链接的部分文字内容示例:driver.findElement(By.partiallinkText("车辆"));
4、通过css定位元素
4.1、方法:By.cssSelector("css表达式");选择某一个符合css表达式的元素By.cssSelectors("css表达式");选择全部符合css表达式的元素 介绍:通过css表达式这种组合的方式来进行定位,和xpth方式基本相同示例:driver.findElement(By.cssSelector(".bgcolor"));备注:1、cssSelector即css选择器,即 .bgcolor{ color : red }这个CSS表达式中 .bgcolor就是cssSelector2、该方法还可以使用id,tagname,class来定位元素(1)ID: By.cssSelector("#ID值"); //需要在id值前面加上#(2)Tagname:By.cssSelector("tag值");(3) Class:By.cssSelector(".class值"); //需要在前面加上 .(加上点)
5、通过xpth定位元素
5.1、方法:By.xpth("元素路径");选择某一个符合css表达式的元素介绍:通过元素路径来进行定位 示例:driver.findElement(By.xpth("/html/body/div[1]/section/aside/div/"));备注:元素的路径可以使用一些浏览器组件来进行查找,例如xpthFind、xpthHelp等,可以快速定位元素的路径5.2、xpth定位语法/ 绝对定位,从根节点进行选取// 相对定位,从匹配选择的当前节点选择文档中的节点. 选取当前节点.. 选取当前节点的父节点@ 选取属性,@class='XXX' @id='XXX' 属性放在[]中 【 //div[@name='phone']//input 】* 通配符,匹配所有 //*@* 通配符,匹配所有属性 //*[@*='hello'] 5.3、xpth定位方式xpath定位分为绝对定位和相对定位(1)绝对定位 (/):严格按照路径、同级元素的位置来定位,缺点:页面一动,基本崩溃例如:/html/body/div[2]/div/form/div[1]/input 以/html开始(2)相对定位(//):有一个参照物 不考虑路径和位置 以//开头 //标签名[@属性名称=值]例如//input[@name='phone'] # 标签名为input并且name属性值为phone
5.4、其他语法(1)and or示例: //input[@name='phone' and @datatype='m'](2)包含 //input[contains(@class,'username') ] //标签名[contains(@属性值,被包含的值)](3)文本内容定位示例://a[text()='数据分析'] //a[contains(text(),'数据分析')]
有问题的话,欢迎指正,谢谢
Selenium原理及元素定位方法(JAVA)相关推荐
- Python+selenium自动化八大元素定位方法及实例(超详细)
目录 一.selenium模块中的find_element_by_id方法无法使用 二.Python+selenium自动化八大元素定位方法 使用场景: 1.通过id属性定位:driver.find_ ...
- Selenium—八种元素定位方法
前言: 在学习元素定位之前,我们最好能懂一点html的知识.我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素. 一.查看页面元素 用谷歌浏览器打开百 ...
- selenium自动化常用元素定位方法
一.选择界面元素 根据元素的特征选择:ID,Name,Class,TagName,link_text 根据元素的特征和关系:css,xpath 二.如何选择界面元素 1.存在ID属性的元素,可通过 i ...
- selenium之css元素定位方法
一. 单一属性定位(id用"#",class用".") 1:type selector driver.find_element_by_css_selector( ...
- Selenium元素定位方法大全
目录 一.背景 二.浏览器定位元素 三.Selenium元素定位代码 3.1 通过id定位 3.2 通过class定位 3.3 通过name定位 3.4 通过tagname定位 3.5 通过link_ ...
- 八大元素定位方法(Python/Java)
许多不切实际的鼓励,大都是来自酒肉朋友或是远方亲戚. 小编最近在学习Web 自动化测试,所以趁热打铁,整理下相关的知识点,今天主要分享的是八大元素定位方法,无论是移动端还是web端,八大定位方法是共用 ...
- Selenium常用的8大元素定位方法
1.元素定位方法的分类(调用方式): 直接调用型(推荐方式) driver.find_element_by_xxx(value) 使用By类型(需要导入By) from selenium.webdri ...
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)
转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...
- selenium自动化测试——常见的八种元素定位方法
selenium常用的八种元素定位方法 1.通过 id 定位:find_element_by_id() 2.通过 name 定位:find_element_by_name() 3.通过 tag 定位: ...
最新文章
- Android XML 实例化的过程
- 由存储过程直接生成类文件
- Delphi的单元文件详解
- 全球 MEDC 2007 举行日期
- 最小生成树、最短路径树
- java基础 --- Arrays.asList():返回指定数组支持的固定大小列表
- 获奖者:武永卫,男,清华大学计算机系教授、博士生导师,《大数据》杂志编委。...
- wxpython textctrl_wxPython TextCtrl类
- 转:requirejs2.0新特性介绍
- 前端的3D(css3版本)--淘宝造物节3D创景的制作
- 688. 骑士在棋盘上的概率(中等 动态规划)
- 除了Google Adsense外比较适合英文站投放的国外广告联盟
- 板载天线设计相关资料
- Android开发 人民币符号(¥)显示不一致的问题
- C#设置按钮鼠标进入时半透明样式
- HTML+CSS+JS实现3D爱心跳动特效
- 人生需有三心境,你有吗?
- c语言使用循环下落方块,C语言 俄罗斯方块的实现1 全局变量
- 一场 Chat 拥有自己的博客
- 为什么总跳到国内版(cn.bing.com)?New Bing使用全攻略