selenium+python自动化元素定位
最近学习自动化测试,终于初步学习完成,需要进行博客日志总结,加深巩固自己的知识。
元素的八种定位方式
1.id
以百度为例子

我们在python输入的元素定位语法:bs.find_element_by_id('kw').send_keys('selenium (必须包含id属性)

2.name
以百度为例

元素定位语法:(必须包含name属性的)

3.class_name
百度为例

元素定位语法:(必须包含class属性)

4.tag_name

元素定位语法:(必须是具有唯一标签才能定位)

5.link_text

元素定位语法:(用于定位带有超链接包含文字的元素)

6.partial_link_text
语法同link_text相同,区别在于partial_link_text可以进行模糊定位

这里为什么不输入“新”字呢?,因为定位不是唯一的
7.xpath
这是需要重点学习的地方,因为xpath功能强大,基本能定位所有的元素,如果不行那就多重逻辑加上多关系路径结合,少有失手。
xpath提供两种定位方式
一.绝对路径 : bs.find_element_by_xpath("/html/body/form/span/input"
绝对路径因正常情况下使用起来比较繁琐,所以一般使用下面的相对路径
二.相对路径 : bs.find_element_by_xpath("//form/span/input") 相对路径单一使用只能定位多个相似的元素,必须结合属性或者层级以及逻辑关系才能定位唯一的元素。
1.相对路径加属性: bs.find_element_by_xpath("//*[@id='kw']") 、bs.find_element_by_xpath("//*[@name='wd']") 、bs.find_element_by_xpath("//input[@class='s_ipt']")
2.相对路径加属性加层级关系 : 1)父子关系定位: bs.find_element_by_xpath("//span[@class='soutu-btn']/input") 、2)兄弟关系定位 :bs.find_element_by_xpath("//form[@id='form']/../span/input")
3.相对路径加属性加逻辑关系 : bs.find_element_by_xpath("//input[@id='kw' and @name='wd']")(并不局限与id、name、class等,其他属性也能利用,并且可以逻辑关系嵌套父子关系或者兄弟关系的逻辑关系)bs.find_element_by_xpath("//input[@id='wd' and @target='_black']/../[@id='wd' and @target='_sipt']/div")
8.css
同上面的xpath一样也是重点和使用最多的方法,因其定位元素速度比xpath快,方法多,所有元素皆可定位,并且上面的定位工具也支持css定位和检查,所以建议大家尽量使用css。
css定位语法:
1.id : bs.find_element_by_css_selector("#kw")
2.class : bs.find_element_by_css_selector(".s_ipt")
3.属性(必须唯一属性) : bs.find_element_by_css_selector("[name=wd]") 、 bs.find_element_by_css_selector("[type=submit]")
4. 层级 : bs.find_element_by_css_selector("html > body > form > span > input")
5. 属性加层级 : bs.find_element_by_css_selector("span.soutu-btn> input#kw") 、bs.find_element_by_css_selector("form#form > span > input")
注意:firebug和firepath在新的火狐浏览器已经被抛弃了,具体原因不是很清楚,但其功能强大,定位精准,可惜只能安装低版本的火狐浏览器使用。
selenium+python自动化元素定位的更多相关文章
- selenium+python自动化-元素定位
自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告. 本篇主要讲几种基本的元素定位方法元素定位在这四个环节中是至关重要的,如果说按学习精力 ...
- selenium python bindings 元素定位
1. 辅助 Firepath Firefox是所有做前端的必不可少的浏览器因为firebug的页面元素显示很清晰.用selenium 去定位元素的时候Firefox还有一个非常友好的工具就是firep ...
- Appium + Python自动化 - 元素定位uiautomatorviewer
元素定位主要介绍如何使用uiautiomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作.uiautiomatorviewer是android-sdk自带的一个元素定位工具,非常 ...
- Appium+python自动化-元素定位uiautomatorviewer的使用
前言 环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. uiautomatorviewer是androi ...
- python+selenium页面自动化 元素定位实际遇到的各种问题(持续更新)
1.class属性有空格 (已验证) 当classname 中存在空格的时候,直接使用find_element_by_class_name时,会显示定位失败,此时,需要将classname中的空格替 ...
- UI自动化(selenium+python)之元素定位的三种等待方式
前言 在UI自动化过程中,常遇到元素未找到,代码报错的情况.这种情况下,需要用等待wait. 在selenium中可以用到三种等待方式即sleep,implicitly_wait,WebDriverW ...
- selenium + python之元素定位
selenium对web各元素的操作首先就要先定位元素,定位元素的方法主要有以下几种:通过id定位元素:find_element_by_id("id_vaule")通过name定位 ...
- Selenium2+python自动化28-table定位
前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...
- selenium+python自动化79-文件下载(SendKeys)
前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...
随机推荐
- puk1251 最小生成树
Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid ...
- Flask常用扩展(Extentions)
Flask常用扩展(Extentions) 官网;http://flask.pocoo.org/extensions/ 1.Flask-Script 说明: 一个flask终端运行的解析器 安装: ...
- 快速傅里叶变换学习笔记(FFT)
什么是FFT FFT是用来快速计算两个多项式相乘的一种算法. 如果我们暴力计算两个多项式相乘,复杂度必然是\(O(n^2)\)的,而FFT可以将复杂度降至\(O(nlogn)\) 如何FFT 要学习F ...
- Python3网络学习案例二:traceroute详解
1. 写在前面 本文是基于上一篇"ping详解"写的: 不同操作系统下的命令也不同,本文仅针对windows系统,命令为"tracert xxx",效果如下 2 ...
- MySQL安装及安装问题解答(二)
在安装过程中难免会有一些异常情况出现,笔者对一部分异常情况做出解答以供参考 1.MySQL未能成功启动 在输入net start mysql后提示 MySQL 服务正在启动, MySQL 服务无法启动 ...
- 【事件中心 Azure Event Hub】Event Hub日志种发现的错误信息解读
问题描述 使用Event Hub消费事件时,出现的各种客户端错误的解读.(再后期遇见新的错误信息,会持续添加进此说明) 一:再Linux中运行Event Hub消费端程序,出现Too many ope ...
- P5530 [BOI 2002]双调路径
题意描述 [BOI 2002]双调路径 题意描述的确实不是很清楚(出题人惜字如金). 给定一张有 \(n\) 个点,\(m\) 条边的无向图,每条边有两个权值,分别表示经过这个点的代价和时间. 同时给 ...
- 851. Loud and Rich —— weekly contest 87
851. Loud and Rich 题目链接:https://leetcode.com/problems/loud-and-rich/description/ 思路:有向图DFS,记录最小的quie ...
- Spark架构与原理这一篇就够了
一.基本介绍 是什么? 快速,通用,可扩展的分布式计算引擎. 弹性分布式数据集RDD RDD(Resilient Distributed Dataset)弹性分布式数据集,是Spark中最基本的数据( ...
- c++函数声明的位置对函数重载的影响
c++为了兼容c,也是采用(假)单遍编译.这特别影响函数重载决议(当c++编译器读到一个函数调用语句时,它必须从目前已看到的同名函数中选出最佳函数,哪怕后面的代码中出现了更合适的匹配) 1 #incl ...