一、定位方法

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

#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八大定位方法的更多相关文章

  1. python selenium(定位方法)

    一.定位方法 注意:元素属性必须唯一存在 #id定位 find_element_by_id() #name定位 find_element_by_name() #class_name定位 find_el ...

  2. Python+Selenium自动化-定位一组元素,单选框、复选框的选中方法

    Python+Selenium自动化-定位一组元素,单选框.复选框的选中方法   之前学习了8种定位单个元素的方法,同时webdriver还提供了8种定位一组元素的方法.唯一区别就是在单词elemen ...

  3. Python+Selenium自动化-定位页面元素的八种方法

    Python+Selenium自动化-定位页面元素的八种方法   本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子. 0.元素定位方法主要有: id定位:find_elemen ...

  4. python之selenium元素定位方法

    前提: 大家好,今天我们来学习一下selenium,今天主要讲解selenium定位元素的方法,希望对大家有所帮助! 内容: 一,selenium定位元素 selenium提供了8种方法: 1.id ...

  5. python+selenium元素定位——8种方法

    定位元素,selenium提供了8中元素定位方法: (1)find_element_by_id() :html规定,id在html中必须是唯一的,有点类似于身份证号 (2)find_element_b ...

  6. python selenium 元素定位(三)

    上两篇的博文中介绍了python selenium的环境搭建和编写的第一个自动化测试脚本,从第二篇的例子中看出来再做UI级别的自动化测试的时候,有一个至关重要的因素,那就是元素的定位,只有从页面上找到 ...

  7. Python Appium 元素定位方法简单介绍

    Python  Appium  元素定位 常用的八种定位方法(与selenium通用) # id定位 driver.find_element_by_id() # name定位 driver.find_ ...

  8. selenium 之定位方法

    1 id 定位 driver.find_element_by_id() HTML 规定id 属性在HTML 文档中必须是唯一的.这类似于公民的身份证号,具有很强的唯一性 from selenium i ...

  9. Python&Selenium智能等待方法封装

    摘要:本篇博文用几行代码展示Python和Selenium做自动化测试时常见的显示等待和封装 # 用于实现智能等待页面元素的出现 # encoding = utf-8 ""&quo ...

随机推荐

  1. 企业架构 Red Hat Drools KIE Project 三大核心产品

    美团放弃Drools自研规则引擎: https://blog.csdn.net/qq_18603599/article/details/80767912 Drools rule engine虽然好,但 ...

  2. python路径相关技巧

    在文件C:\work\python\rqalpha\rqalpha\utils\config.py 找文件:C:\work\python\rqalpha\rqalpha\config.yml 则通过下 ...

  3. [LeetCode] 243. Shortest Word Distance 最短单词距离

    Given a list of words and two words word1 and word2, return the shortest distance between these two ...

  4. [计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程2

    faster-rcnn分为matlab版本和python版本,首先记录弄python版本的环境搭建过程.matlab版本见另一篇:faster-rcnn(testing): ubuntu14.04+c ...

  5. 2019暑假牛客多校训练-第八场-C-CDMA(递归、水题)

    观察前3组可以推出递归规律,生成下一个类型时,每行copy自身与自身相反. 题目描述 Gromah and LZR have entered the third level. There is a b ...

  6. 喜马拉雅 FM 已购付费音频下载

    如何下载在喜马拉雅 FM 中已购买的付费音频.之前想分享自己购买的付费音频给朋友听,碍于喜马拉雅 FM 的音频不能直接导出,所以准备自己搞个下载的小软件. 仅可下载已购买的付费音频.当然,如果你是会员 ...

  7. CF13C Sequence(DP+离散化)

    题目描述 给定一个序列,每次操作可以把某个数+1-1.要求把序列变成非降数列.求最少的修改次数. 输入输出样例 输入 #1 - 输出 #1 4 输入 #2 输出 #2 1 解题思路 这题是一道非常好题 ...

  8. LeetCode | 152. 乘积最大子序列

    原题(Medium): 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 思路: 遍历数组时且逐元素相乘时,如果遇到了0,在求乘积最大值的情况下,0左边的元素 ...

  9. 嵌入式02 STM32 实验01 端口复用和重映射

    内设与外设: 端口复用和端口重映射都需要了解内设和外设,那么什么是内设?什么是外设? 内设:单片机内部集成的功能一般包括:串口模块.SPI模块(Serial Peripheral Interface  ...

  10. xorm -Find方法实例

    查询多条数据使用Find方法,Find方法的第一个参数为slice的指针或Map指针,即为查询后返回的结果,第二个参数可选,为查询的条件struct的指针. package main import ( ...