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)相关推荐

  1. Python+selenium自动化八大元素定位方法及实例(超详细)

    目录 一.selenium模块中的find_element_by_id方法无法使用 二.Python+selenium自动化八大元素定位方法 使用场景: 1.通过id属性定位:driver.find_ ...

  2. Selenium—八种元素定位方法

    前言: 在学习元素定位之前,我们最好能懂一点html的知识.我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素. 一.查看页面元素 用谷歌浏览器打开百 ...

  3. selenium自动化常用元素定位方法

    一.选择界面元素 根据元素的特征选择:ID,Name,Class,TagName,link_text 根据元素的特征和关系:css,xpath 二.如何选择界面元素 1.存在ID属性的元素,可通过 i ...

  4. selenium之css元素定位方法

    一. 单一属性定位(id用"#",class用".") 1:type selector driver.find_element_by_css_selector( ...

  5. Selenium元素定位方法大全

    目录 一.背景 二.浏览器定位元素 三.Selenium元素定位代码 3.1 通过id定位 3.2 通过class定位 3.3 通过name定位 3.4 通过tagname定位 3.5 通过link_ ...

  6. 八大元素定位方法(Python/Java)

    许多不切实际的鼓励,大都是来自酒肉朋友或是远方亲戚. 小编最近在学习Web 自动化测试,所以趁热打铁,整理下相关的知识点,今天主要分享的是八大元素定位方法,无论是移动端还是web端,八大定位方法是共用 ...

  7. Selenium常用的8大元素定位方法

    1.元素定位方法的分类(调用方式): 直接调用型(推荐方式) driver.find_element_by_xxx(value) 使用By类型(需要导入By) from selenium.webdri ...

  8. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

  9. selenium自动化测试——常见的八种元素定位方法

    selenium常用的八种元素定位方法 1.通过 id 定位:find_element_by_id() 2.通过 name 定位:find_element_by_name() 3.通过 tag 定位: ...

最新文章

  1. Android XML 实例化的过程
  2. 由存储过程直接生成类文件
  3. Delphi的单元文件详解
  4. 全球 MEDC 2007 举行日期
  5. 最小生成树、最短路径树
  6. java基础 --- Arrays.asList():返回指定数组支持的固定大小列表
  7. 获奖者:武永卫,男,清华大学计算机系教授、博士生导师,《大数据》杂志编委。...
  8. wxpython textctrl_wxPython TextCtrl类
  9. 转:requirejs2.0新特性介绍
  10. 前端的3D(css3版本)--淘宝造物节3D创景的制作
  11. 688. 骑士在棋盘上的概率(中等 动态规划)
  12. 除了Google Adsense外比较适合英文站投放的国外广告联盟
  13. 板载天线设计相关资料
  14. Android开发 人民币符号(¥)显示不一致的问题
  15. C#设置按钮鼠标进入时半透明样式
  16. HTML+CSS+JS实现3D爱心跳动特效
  17. 人生需有三心境,你有吗?
  18. c语言使用循环下落方块,C语言 俄罗斯方块的实现1 全局变量
  19. 一场 Chat 拥有自己的博客
  20. 为什么总跳到国内版(cn.bing.com)?New Bing使用全攻略

热门文章

  1. Android DialogFragment实现底部弹出菜单效果
  2. wordpress 图片上传冲突
  3. 武汉新华电脑学校计算机协会,重庆新华电脑学校计算机管理协会更名庆典
  4. 5个JavaScript中高阶函数的示例
  5. 微信小程序 分享功能
  6. 2017年10月英语
  7. android4.4.2电视投屏,手机投屏到电视,原来这么简单好用!(收藏)
  8. 国庆长假大事记:百度地图、先锋系、火箭队
  9. ESP32学习笔记(一) 芯片型号介绍
  10. 工信部打击通讯信息诈骗取得阶段性进展