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定位
#coding=utf-8
from selenium import webdriver
dr = webdriver.Chrome()
dr.get("https://www.baidu.com")
dr.find_element_by_id("kw").send_keys("python")
2.name定位
#coding=utf-8
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定位
#coding=utf-8
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.链接文本定位
#coding=utf-8
from selenium import webdriver
dr = webdriver.Chrome()
dr.get("https://www.baidu.com")
dr.find_element_by_link_text("hao123").click()
5.部分链接文本定位
#coding=utf-8
from selenium import webdriver
dr = webdriver.Chrome()
dr.get("https://www.baidu.com")
dr.find_element_by_partial_link_text("hao").click()
6.xpath定位
(1)直接复制页面中xpath
(2)相对路径(找祖籍)
- 两个斜线(//)代表相对路径
- 使用了通配符 * 表示匹配任意标签名
#coding=utf-8
from selenium import webdriver
dr = webdriver.Chrome()
dr.get("https://www.baidu.com")
dr.find_element_by_xpath('//*[@class="s_ipt"]').send_keys("python")
#coding=utf-8
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")
#coding=utf-8
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树从上至下一级一级查找
- / 表示上下级
#coding=utf-8
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)相对路径结合绝对路径用法
#coding=utf-8
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")
7.css定位
css常用符号:
- # 表示id
- . 表示class
- > 表示子元素,层级
(1)css中通过id定位
#coding=utf-8
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定位
#coding=utf-8
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(u"新方硕")
(3)通过其它属性定位
find_element_by_css_selector("[属性=‘属性值’]")
find_element_by_css_selector("[属性=属性值]") ---------------- 请注意这里属性值没有加引号
#coding=utf-8
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('[value="请输入搜索内容"]').send_keys(u"新方硕")
(4)通过父子关系定位:
- 假如你不知道某人的身份证号码、名字、手机号码等信息时无法取得联系,但是你知道某人爸爸的手机号码,此时你可以通过他爸爸来找到某人。
- 换成术语就是当我们定位元素时,发现没有可以标识的唯一的元素的属性值时,那我们可以考虑用父亲标签结合属性来定位元素。
- css路径定位时,不能和xpath定位一样标注出第几个标签
#coding=utf-8
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(u"新方硕")
(5)css的绝对路径定位
#coding=utf-8
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(u"新方硕")
python selenium八大定位方法的更多相关文章
- python selenium(定位方法)
一.定位方法 注意:元素属性必须唯一存在 #id定位 find_element_by_id() #name定位 find_element_by_name() #class_name定位 find_el ...
- Python+Selenium自动化-定位一组元素,单选框、复选框的选中方法
Python+Selenium自动化-定位一组元素,单选框.复选框的选中方法 之前学习了8种定位单个元素的方法,同时webdriver还提供了8种定位一组元素的方法.唯一区别就是在单词elemen ...
- Python+Selenium自动化-定位页面元素的八种方法
Python+Selenium自动化-定位页面元素的八种方法 本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子. 0.元素定位方法主要有: id定位:find_elemen ...
- python之selenium元素定位方法
前提: 大家好,今天我们来学习一下selenium,今天主要讲解selenium定位元素的方法,希望对大家有所帮助! 内容: 一,selenium定位元素 selenium提供了8种方法: 1.id ...
- python+selenium元素定位——8种方法
定位元素,selenium提供了8中元素定位方法: (1)find_element_by_id() :html规定,id在html中必须是唯一的,有点类似于身份证号 (2)find_element_b ...
- python selenium 元素定位(三)
上两篇的博文中介绍了python selenium的环境搭建和编写的第一个自动化测试脚本,从第二篇的例子中看出来再做UI级别的自动化测试的时候,有一个至关重要的因素,那就是元素的定位,只有从页面上找到 ...
- Python Appium 元素定位方法简单介绍
Python Appium 元素定位 常用的八种定位方法(与selenium通用) # id定位 driver.find_element_by_id() # name定位 driver.find_ ...
- selenium 之定位方法
1 id 定位 driver.find_element_by_id() HTML 规定id 属性在HTML 文档中必须是唯一的.这类似于公民的身份证号,具有很强的唯一性 from selenium i ...
- Python&Selenium智能等待方法封装
摘要:本篇博文用几行代码展示Python和Selenium做自动化测试时常见的显示等待和封装 # 用于实现智能等待页面元素的出现 # encoding = utf-8 ""&quo ...
随机推荐
- git - gitHub生成Markdown目录
就是github-markdown-toc.go. github-markdown-toc.go Github地址 如果你有GO语言(又是你)的编译环境,可以尝试自己编译,如果没有,可以直接下载编译好 ...
- nginx反向代理结合apache和php的配置示例
.前端nginx主配置文件 # cat nginx.conf worker_processes ; #pid logs/nginx.pid; pid /data/www/logs/nginx.pid; ...
- BackgroundWorkerHelper
public static class BackgroundWorkerHelper { public static void Run(DoWorkEventHandler doWork, RunWo ...
- 容器版jenkins使用宿主机的kubectl命令
参照里面的第4步: https://www.cnblogs.com/effortsing/p/10486960.html
- [LeetCode] 49. Group Anagrams 分组变位词
Given an array of strings, group anagrams together. For example, given: ["eat", "tea& ...
- linux下RAR和ZIP安装和使用
服务器没装rar,对于上传是压缩的文件来说,是个很大的问题. 源码安装rar: 1. 下载: wget http://www.rarlab.com/rar/rarlinux-x64-4.2.0.tar ...
- 08 Spring框架的概念、优势、体系结构、耦合性和IOC(反转控制)
1.spring介绍 Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control: 反转控制)和 AOP(Aspect ...
- [转帖]熬夜变傻有科学依据,人类睡觉时会被“洗脑”,科学家首次拍下全程 | Science
熬夜变傻有科学依据,人类睡觉时会被“洗脑”,科学家首次拍下全程 | Science https://mp.weixin.qq.com/s/hJeJjh0GSUclcoh3Z6mySQ 关注前沿科技 量 ...
- 删除List集合中的元素你碰到过这样的陷阱吗?
删除List的三种方式: (1) 普通遍历 : @Test public void testList(){ ArrayList<String> list = new ArrayList&l ...
- python 之网络编程(基于TCP协议Socket通信的粘包问题及解决)
8.4 粘包问题 粘包问题发生的原因: 1.发送端需要等缓冲区满才发送出去,造成粘包(发送数据时间间隔很短,数据了很小,会合到一起,产生粘包),这样接收端,就难于分辨出来了,必须提供科学的拆包机制. ...