一、定位方法

注意:元素属性必须唯一存在

  1. #id定位
  2. find_element_by_id()
  3. #name定位
  4. find_element_by_name()
  5. #class_name定位
  6. find_element_by_class_name()
  7. #链接文本定位
  8. find_element_by_link_text()
  9. #部分链接文本定位
  10. find_element_by_partial_link_text()
  11. #xpath定位
  12. find_element_by_xpath()
  13. #css定位
  14. find_element_by_css_selector()
  15. #tag_name定位
  16. find_element_by_tag_name()
  17.  
  18. #selenium By定位,使用这种用法前需要导入By类,如下:
  19. from selenium.webdriver.common.by import By
  20. #id定位
  21. find_element(By.ID,value)
  22. #name定位
  23. find_element(By.NAME,value)
  24. #class_name定位
  25. find_element(By.CLASS_NAME,value)
  26. #链接文本定位
  27. find_element(By.LINK_TEXT,value)
  28. #部分链接文本定位
  29. find_element(By.PARTIAL_LINK_TEXT,value)
  30. #xpath定位
  31. find_element(By.XPATH,value)
  32. #css定位
  33. find_element(By.CSS_SELECTOR,value)
  34. #tag_name定位
  35. find_element(By.TAG_NAME,value)

1.id定位

  1. from selenium import webdriver
  2. dr = webdriver.Chrome()
  3. dr.get("https://www.baidu.com")
  4. dr.find_element_by_id("kw").send_keys("python")

2.name定位

  1. from selenium import webdriver
  2. dr = webdriver.Chrome()
  3. dr.get("https://www.baidu.com")
  4. dr.find_element_by_name("wd").send_keys("python")

3.class_name定位

  1. from selenium import webdriver
  2. dr = webdriver.Chrome()
  3. dr.get("https://www.baidu.com")
  4. dr.find_element_by_class_name("s_ipt").send_keys("python")

4.链接文本定位

  1. from selenium import webdriver
  2. dr = webdriver.Chrome()
  3. dr.get("https://www.baidu.com")
  4. dr.find_element_by_link_text("hao123").click()

5.部分链接文本定位

  1. from selenium import webdriver
  2. dr = webdriver.Chrome()
  3. dr.get("https://www.baidu.com")
  4. dr.find_element_by_partial_link_text("hao").click()

6.tag_name定位

  • tag往往用来定义一类功能,所以通过tag识别某个元素的概率很低。任意打开一个页面,都会发现大量的<div>、<input>、<a>等tag,所以tag name定位很少用
  1. from selenium import webdriver
  2.  
  3. dr = webdriver.Chrome()
  4. dr.get("https://www.baidu.com")
  5. # js = "document.getElementById('kw').value='selement'"
  6. # dr.execute_script(js)
  7. inputs = dr.find_elements_by_tag_name("input")
  8. for i in inputs:
  9. if i.get_attribute("id") == "kw": #获取元素属性值进行判断
  10. i.send_keys("selenium")

7.Java_Script定位

  1. from selenium import webdriver
  2.  
  3. dr = webdriver.Chrome()
  4. dr.get("https://www.baidu.com")
  5. js = "document.getElementById('kw').value='selenium'"
  6. dr.execute_script(js)

8.xpath定位

(1)直接复制页面中xpath

(2)相对路径(找祖籍)

  • 两个斜线(//)代表相对路径
  • 使用了通配符 * 表示匹配任意标签名
  1. from selenium import webdriver
  2. dr = webdriver.Chrome()
  3. dr.get("https://www.baidu.com")
  4. dr.find_element_by_xpath('//*[@class="s_ipt"]').send_keys("python")
  1. from selenium import webdriver
  2. dr = webdriver.Chrome()
  3. dr.get("https://www.baidu.com")
  4. dr.find_element_by_xpath('//input[@class="s_ipt"]').send_keys("python")
  1. from selenium import webdriver
  2. from time import sleep
  3.  
  4. dr =webdriver.Chrome()
  5. dr.get("http://xxxxxxxx.com/")
  6. dr.find_element_by_class_name("login").click()
  7. title1 = dr.title
  8. #组合定位
  9. dr.find_element_by_xpath('//input[@placeholder="请输入手机号码" and @name="loginName"]').send_keys("1777982xxxx")
  10. dr.find_element_by_name("loginPwd").send_keys("xxxxxxxx")
  11. dr.find_element_by_xpath('//*[@class="login1"]/div[2]').click()
  12. sleep(2)
  13. title2 = dr.title
  14. if title1 == title2:
  15. raise AssertionError
  16. else:
  17. pass

(3)绝对路径/层级定位

  • 从HTML元素DOM树从上至下一级一级查找
  • / 表示上下级
  1. from selenium import webdriver
  2. import time
  3. dr = webdriver.Chrome()
  4. dr.get("http://192.168.0.161:8081/discuz/forum.php")
  5. time.sleep(2)
  6. 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)相对路径结合绝对路径用法

  1. from selenium import webdriver
  2. import time
  3. dr = webdriver.Chrome()
  4. dr.get("http://192.168.0.161:8081/discuz/forum.php")
  5. time.sleep(2)
  6. 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定位

  1. from selenium import webdriver
  2. import time
  3. dr = webdriver.Chrome()
  4. dr.get("https://www.baidu.com")
  5. time.sleep(2)
  6. dr.find_element_by_css_selector("#kw").send_keys("zhengying")

(2)css中通过class定位

  1. from selenium import webdriver
  2. import time
  3. dr = webdriver.Chrome()
  4. dr.get("https://www.baidu.com")
  5. time.sleep(2)
  6. dr.find_element_by_css_selector(".s_ipt").send_keys("selenium")

(3)通过其它属性定位

  1. find_element_by_css_selector("[属性='属性值']")
  2.  
  3. find_element_by_css_selector("[属性=属性值]") ---------------- 请注意这里属性值没有加引号
  4.  
  5. find_element_by_css_selector("[属性1=属性值1][属性2=属性值2]") ---------------- 组合定位
  1. from selenium import webdriver
  2. dr = webdriver.Chrome()
  3. dr.get("https://www.baidu.com")
  4. dr.find_element_by_css_selector('[id=kw]').send_keys("selenium")
  1. from selenium import webdriver
  2. dr = webdriver.Chrome()
  3. dr.get("https://www.baidu.com")
  4. #组合定位
  5. dr.find_element_by_css_selector('[id=kw][name=wd]').send_keys("selenium")

(4)通过父子关系定位:

  • 假如你不知道某人的身份证号码、名字、手机号码等信息时无法取得联系,但是你知道某人爸爸的手机号码,此时你可以通过他爸爸来找到某人。
  • 换成术语就是当我们定位元素时,发现没有可以标识的唯一的元素的属性值时,那我们可以考虑用父亲标签结合属性来定位元素。
  • css路径定位时,不能和xpath定位一样标注出第几个标签
  1. from selenium import webdriver
  2. import time
  3. dr = webdriver.Chrome()
  4. dr.get("http://192.168.0.161:8081/discuz/forum.php")
  5. time.sleep(2)
  6. dr.find_element_by_css_selector('.scbar_txt_td > input').send_keys("selenium")

(5)css的绝对路径定位

  1. from selenium import webdriver
  2. import time
  3. dr = webdriver.Chrome()
  4. dr.get("http://192.168.0.161:8081/discuz/forum.php")
  5. time.sleep(2)
  6. dr.find_element_by_css_selector('html>body>div>div>div>form>div>div>table>tbody>tr>td>input').send_keys("selenium")

python selenium(定位方法)的更多相关文章

  1. selenium定位方法实例

    selenium定位方法实例 首先打开浏览器输入微博的网址,将网页最大化,等待3秒 from selenium import webdriver import time driver = webdri ...

  2. selenium定位方法(二)

    selenium定位方法(二)  1.xpath定位:xpath是在XML中查找节点所在的路径的表达式 1)绝对路径的Xpath表达式 例:/html/body/div/div[1]/ul//li[3 ...

  3. selenium定位方法(一)

    selenium定位方法-(一) 1.定位页面元素的方式(By类的方法) 1)id定位:通过页面元素的id属性值来定位一个页面元素       注意事项:如果每次刷新网页之后元素的id属性值都不同,说 ...

  4. Python+Selenium定位元素的方法

    Python+Selenium有以下八种定位元素的方法: 1. find_element_by_id() eg: find_element_by_id("kw") 2. find_ ...

  5. python+selenium安装方法

    一.准备工具: 下载 python[python 开发环境] http://python.org/getit/ 下载 setuptools [python 的基础包工具] http://pypi.py ...

  6. selenium定位方法(java实例)(二)

    从下图中可以看到selenium有三类定位元素的方法,一种是直接通过属性.标签以及链接来定位,一种是XPath方式,最后一种是CSS方式. 下表列举了元素定位的例子 selenium之页面元素定位方法 ...

  7. Selenium+Python常见定位方法

    参见官网:http://selenium-python.readthedocs.io/locating-elements.html 有多种策略来定位页面中的元素.你可以使用最适合你的情况.Seleni ...

  8. python+selenium 定位元素的主要方法

    selenium对web各元素的操作首先就要先定位元素,定位元素的方法主要有以下几种: 通过id定位元素:find_element_by_id("id_vaule") 通过name ...

  9. Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)

         在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException ...

  10. 【selenium学习笔记一】python + selenium定位页面元素的办法。

    1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的 ...

随机推荐

  1. mysql几个操作数据库命令符下的常用命令

    1.导出整个数据库 mysqldump -u用户名 -p密码 数据库名 > 导出的文件名 C:\Users\jack> mysqldump -uroot -pmysql sva_rec & ...

  2. 【python实现卷积神经网络】激活层实现

    代码来源:https://github.com/eriklindernoren/ML-From-Scratch 卷积神经网络中卷积层Conv2D(带stride.padding)的具体实现:https ...

  3. Apache SkyWalking

    Apache SkyWalking 什么是 SkyWalking SkyWalking 是观察性分析平台和应用性能管理系统. 提供分布式追踪.服务网格遥测分析.度量聚合和可视化一体化解决方案. 支持J ...

  4. 概率专题_概率/ 数学_基础题_ABEI

    上周三讲了概率和概率dp.如果没有涉及其他综合算法,概率这种题主要是思维,先把这部分的东西写完 给个题目链接:https://vjudge.net/contest/365300#problem Hea ...

  5. unity使用Animator做一个简单的动画

    1.在unity的物体上添加Animator组件 2.在Project下的Assets下添加Animator Controller 3.在Animator Controller添加动作 4.在动作之间 ...

  6. Springboot系列(七) 集成接口文档swagger,使用,测试

    Springboot 配置接口文档swagger 往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配 ...

  7. 字符串的常用操作和方法(Python入门教程)

    字符串的常用操作 很好理解 字符串可以用 ' + ' 连接,或者乘一个常数重复输出字符串 字符串的索引操作 通过一对中括号可以找到字符串中的某个字符 可以通过正负数双向操作噢 用一个中括号来实现 为什 ...

  8. django-admin和manage.py用法

    官网文档地址:django-admin和manage.py 金句: 所有的天赋,都来自于你对你喜欢的某种事物的模仿与学习,否则你就不会有这种天赋. 开篇话: 我们在Django开发过程中,命令行执行最 ...

  9. jQuery的attr和prop属性

    <div id="div1"></div> attr: 首先是一个参数的attr. $("#div").attr("id&qu ...

  10. VideoView--简单的设置全屏幕播放

    我说的最主要的是要在布局哪里设置一下,如: <com.example.mypalyer.fullScreen          android:id="@+id/videoView1& ...