python selenium(定位方法)
一、定位方法
注意:元素属性必须唯一存在
- #id定位
- find_element_by_id()
- #name定位
- find_element_by_name()
- #class_name定位
- find_element_by_class_name()
- #链接文本定位
- find_element_by_link_text()
- #部分链接文本定位
- find_element_by_partial_link_text()
- #xpath定位
- find_element_by_xpath()
- #css定位
- find_element_by_css_selector()
- #tag_name定位
- find_element_by_tag_name()
- #selenium By定位,使用这种用法前需要导入By类,如下:
- from selenium.webdriver.common.by import By
- #id定位
- find_element(By.ID,value)
- #name定位
- find_element(By.NAME,value)
- #class_name定位
- find_element(By.CLASS_NAME,value)
- #链接文本定位
- find_element(By.LINK_TEXT,value)
- #部分链接文本定位
- find_element(By.PARTIAL_LINK_TEXT,value)
- #xpath定位
- find_element(By.XPATH,value)
- #css定位
- find_element(By.CSS_SELECTOR,value)
- #tag_name定位
- find_element(By.TAG_NAME,value)
1.id定位
- from selenium import webdriver
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- dr.find_element_by_id("kw").send_keys("python")
2.name定位
- from selenium import webdriver
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- dr.find_element_by_name("wd").send_keys("python")
3.class_name定位
- from selenium import webdriver
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- dr.find_element_by_class_name("s_ipt").send_keys("python")
4.链接文本定位
- from selenium import webdriver
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- dr.find_element_by_link_text("hao123").click()
5.部分链接文本定位
- from selenium import webdriver
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- dr.find_element_by_partial_link_text("hao").click()
6.tag_name定位
- tag往往用来定义一类功能,所以通过tag识别某个元素的概率很低。任意打开一个页面,都会发现大量的<div>、<input>、<a>等tag,所以tag name定位很少用
- from selenium import webdriver
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- # js = "document.getElementById('kw').value='selement'"
- # dr.execute_script(js)
- inputs = dr.find_elements_by_tag_name("input")
- for i in inputs:
- if i.get_attribute("id") == "kw": #获取元素属性值进行判断
- i.send_keys("selenium")
7.Java_Script定位
- from selenium import webdriver
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- js = "document.getElementById('kw').value='selenium'"
- dr.execute_script(js)
8.xpath定位
(1)直接复制页面中xpath
(2)相对路径(找祖籍)
- 两个斜线(//)代表相对路径
- 使用了通配符 * 表示匹配任意标签名
- from selenium import webdriver
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- dr.find_element_by_xpath('//*[@class="s_ipt"]').send_keys("python")
- from selenium import webdriver
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- dr.find_element_by_xpath('//input[@class="s_ipt"]').send_keys("python")
- from selenium import webdriver
- from time import sleep
- dr =webdriver.Chrome()
- dr.get("http://xxxxxxxx.com/")
- dr.find_element_by_class_name("login").click()
- title1 = dr.title
- #组合定位
- dr.find_element_by_xpath('//input[@placeholder="请输入手机号码" and @name="loginName"]').send_keys("1777982xxxx")
- dr.find_element_by_name("loginPwd").send_keys("xxxxxxxx")
- dr.find_element_by_xpath('//*[@class="login1"]/div[2]').click()
- sleep(2)
- title2 = dr.title
- if title1 == title2:
- raise AssertionError
- else:
- pass
(3)绝对路径/层级定位
- 从HTML元素DOM树从上至下一级一级查找
- / 表示上下级
- from selenium import webdriver
- import time
- dr = webdriver.Chrome()
- dr.get("http://192.168.0.161:8081/discuz/forum.php")
- time.sleep(2)
- dr.find_element_by_xpath("html/body/div[5]/div/div[1]/form/div/div/table/tbody/tr[1]/td[2]/input").send_keys("zhengying")
(4)相对路径结合绝对路径用法
- from selenium import webdriver
- import time
- dr = webdriver.Chrome()
- dr.get("http://192.168.0.161:8081/discuz/forum.php")
- time.sleep(2)
- dr.find_element_by_xpath('//*[@id="lsform"]/div/div/table/tbody/tr[1]/td[2]/input').send_keys("zhengying")
9.css定位
css常用符号:
- # 表示id
- . 表示class
- > 表示子元素,层级
(1)css中通过id定位
- from selenium import webdriver
- import time
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- time.sleep(2)
- dr.find_element_by_css_selector("#kw").send_keys("zhengying")
(2)css中通过class定位
- from selenium import webdriver
- import time
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- time.sleep(2)
- dr.find_element_by_css_selector(".s_ipt").send_keys("selenium")
(3)通过其它属性定位
- find_element_by_css_selector("[属性='属性值']")
- find_element_by_css_selector("[属性=属性值]") ---------------- 请注意这里属性值没有加引号
- find_element_by_css_selector("[属性1=属性值1][属性2=属性值2]") ---------------- 组合定位
- from selenium import webdriver
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- dr.find_element_by_css_selector('[id=kw]').send_keys("selenium")
- from selenium import webdriver
- dr = webdriver.Chrome()
- dr.get("https://www.baidu.com")
- #组合定位
- dr.find_element_by_css_selector('[id=kw][name=wd]').send_keys("selenium")
(4)通过父子关系定位:
- 假如你不知道某人的身份证号码、名字、手机号码等信息时无法取得联系,但是你知道某人爸爸的手机号码,此时你可以通过他爸爸来找到某人。
- 换成术语就是当我们定位元素时,发现没有可以标识的唯一的元素的属性值时,那我们可以考虑用父亲标签结合属性来定位元素。
- css路径定位时,不能和xpath定位一样标注出第几个标签
- from selenium import webdriver
- import time
- dr = webdriver.Chrome()
- dr.get("http://192.168.0.161:8081/discuz/forum.php")
- time.sleep(2)
- dr.find_element_by_css_selector('.scbar_txt_td > input').send_keys("selenium")
(5)css的绝对路径定位
- from selenium import webdriver
- import time
- dr = webdriver.Chrome()
- dr.get("http://192.168.0.161:8081/discuz/forum.php")
- time.sleep(2)
- dr.find_element_by_css_selector('html>body>div>div>div>form>div>div>table>tbody>tr>td>input').send_keys("selenium")
python selenium(定位方法)的更多相关文章
- selenium定位方法实例
selenium定位方法实例 首先打开浏览器输入微博的网址,将网页最大化,等待3秒 from selenium import webdriver import time driver = webdri ...
- selenium定位方法(二)
selenium定位方法(二) 1.xpath定位:xpath是在XML中查找节点所在的路径的表达式 1)绝对路径的Xpath表达式 例:/html/body/div/div[1]/ul//li[3 ...
- selenium定位方法(一)
selenium定位方法-(一) 1.定位页面元素的方式(By类的方法) 1)id定位:通过页面元素的id属性值来定位一个页面元素 注意事项:如果每次刷新网页之后元素的id属性值都不同,说 ...
- Python+Selenium定位元素的方法
Python+Selenium有以下八种定位元素的方法: 1. find_element_by_id() eg: find_element_by_id("kw") 2. find_ ...
- python+selenium安装方法
一.准备工具: 下载 python[python 开发环境] http://python.org/getit/ 下载 setuptools [python 的基础包工具] http://pypi.py ...
- selenium定位方法(java实例)(二)
从下图中可以看到selenium有三类定位元素的方法,一种是直接通过属性.标签以及链接来定位,一种是XPath方式,最后一种是CSS方式. 下表列举了元素定位的例子 selenium之页面元素定位方法 ...
- Selenium+Python常见定位方法
参见官网:http://selenium-python.readthedocs.io/locating-elements.html 有多种策略来定位页面中的元素.你可以使用最适合你的情况.Seleni ...
- python+selenium 定位元素的主要方法
selenium对web各元素的操作首先就要先定位元素,定位元素的方法主要有以下几种: 通过id定位元素:find_element_by_id("id_vaule") 通过name ...
- Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)
在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException ...
- 【selenium学习笔记一】python + selenium定位页面元素的办法。
1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的 ...
随机推荐
- mysql几个操作数据库命令符下的常用命令
1.导出整个数据库 mysqldump -u用户名 -p密码 数据库名 > 导出的文件名 C:\Users\jack> mysqldump -uroot -pmysql sva_rec & ...
- 【python实现卷积神经网络】激活层实现
代码来源:https://github.com/eriklindernoren/ML-From-Scratch 卷积神经网络中卷积层Conv2D(带stride.padding)的具体实现:https ...
- Apache SkyWalking
Apache SkyWalking 什么是 SkyWalking SkyWalking 是观察性分析平台和应用性能管理系统. 提供分布式追踪.服务网格遥测分析.度量聚合和可视化一体化解决方案. 支持J ...
- 概率专题_概率/ 数学_基础题_ABEI
上周三讲了概率和概率dp.如果没有涉及其他综合算法,概率这种题主要是思维,先把这部分的东西写完 给个题目链接:https://vjudge.net/contest/365300#problem Hea ...
- unity使用Animator做一个简单的动画
1.在unity的物体上添加Animator组件 2.在Project下的Assets下添加Animator Controller 3.在Animator Controller添加动作 4.在动作之间 ...
- Springboot系列(七) 集成接口文档swagger,使用,测试
Springboot 配置接口文档swagger 往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配 ...
- 字符串的常用操作和方法(Python入门教程)
字符串的常用操作 很好理解 字符串可以用 ' + ' 连接,或者乘一个常数重复输出字符串 字符串的索引操作 通过一对中括号可以找到字符串中的某个字符 可以通过正负数双向操作噢 用一个中括号来实现 为什 ...
- django-admin和manage.py用法
官网文档地址:django-admin和manage.py 金句: 所有的天赋,都来自于你对你喜欢的某种事物的模仿与学习,否则你就不会有这种天赋. 开篇话: 我们在Django开发过程中,命令行执行最 ...
- jQuery的attr和prop属性
<div id="div1"></div> attr: 首先是一个参数的attr. $("#div").attr("id&qu ...
- VideoView--简单的设置全屏幕播放
我说的最主要的是要在布局哪里设置一下,如: <com.example.mypalyer.fullScreen android:id="@+id/videoView1& ...