多测师拱墅校区肖sir_高级金牌讲师_selenium库定位元素

一、定位元素:
1、要实现UI自动化,就必须学会定位web页面元素,selenium核心,webdrvier 模块提供了
2、9种定位元素
定位方式 提供方法
id定位 find_element_by_id()
name定位 find_element_by_name()
class定位 find_element_by_class_name()
link定位 find_element_by_link_text()
partial link定位 find_element_by_partial_link_text()
JavaScript定位 document.getElementById(“kw”).value=“duoceshi”
tag定位 find_element_by_tag_name()
xpath定位 find_element_by_xpath()
css定位 find_element_by_css_selector()
3、在这9种常用的定位方法中,
优先顺序
1)有id优先使用id定位
2)没有id,考虑使用name或者class定位。
3)如果没有id,name,class再考虑用xpath,css定位。
4)如果是链接可以考虑使用link_text,partial_link_text 定位。
5)tag_name和JavaScript还是用的比较少的。
我们根据实际情况,具体问题具体分析

=====================================
二、实战定位
(1)url=‘https://www.baidu.com/’
(2)打开f12 定位元素
在这里插入图片描述
在这里插入图片描述
(1) id定位 find_element_by_id()
案例:
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_id(‘kw’).send_keys(“dcs”)
在这里插入图片描述

(2) name定位 find_element_by_name()
案例:
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_name(‘wd’).send_keys(‘hz’)

在这里插入图片描述
(3)class定位 find_element_by_class_name()
案例3:
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_class_name(“s_ipt”).send_keys(‘class定位’)

(4) link定位 find_element_by_link_text()
案例:
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_link_text(“hao123”).click()

在这里插入图片描述
(5) partial link定位 find_element_by_partial_link_text()
案例:
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_partial_link_text(“hao”).click()
在这里插入图片描述
(6) JavaScript定位 document.getElementById(“kw”).value=“duoceshi”
案例:
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
js=‘document.getElementById(“kw”).value=“js定位”’
d.execute_script(js)

(7) tag定位 find_element_by_tag_name()
案例:
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
inputs=d.find_elements_by_tag_name(“input”)
#通过elements 来找到当前百度中所有的input标签
for i in inputs:
if i.get_attribute(“name”)==‘wd’:
i.send_keys(“tag定位”)
(8) xpath定位 find_element_by_xpath()
第一步:复制xpath
//[@id=“kw”]
第二步:
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_xpath('//
[@id=“kw”]').send_keys(“xpth定位”)

(9)css定位 find_element_by_css_selector()
第一步:在页面右键==copy=selector
#kw
第二步:
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_css_selector(“#kw”).send_keys(“css 定位”)

======================================================
详细讲解xpath和css

一、xpath方法
1、路径的区分:
(1)绝对路
特点:a、以单斜杠/开头, b、从页面跟元素(html标签)开始,严格按照元素在html页面中的位置和顺序向下查找
案例:/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input

(2)相对路径(我们定位一般用相对路径)
特点:a、以双斜杠 // k开头 b、不考虑元素在页面中的绝对路径和位置 c、只考虑是否存在符合表达式的元素即可。
案例 ://*[@id=“kw”]

(3) 使用标签名+节点属性点位
语法://标签名[ @属性名=属性值]
//表示相对路径,从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
. 选择当前节点
。。选择当前节点的父节点
@ 匹配任何属性节点
@选取属性
案例:
//[@id=‘kw’]
// [@name=‘wd’]
//[@id=“form”]
//
[@id=“form”]/span[1]

实战:xpath实例
(1)xpath中的id定位

from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_xpath(‘//[@id=“kw”]‘).send_keys(“xpth中id定位”)
(2)xpath中的name定位
格式:d.find_element_by_xpath(’//
[@name=“wd”]’).send_keys(“xpth中name定位”)
案例:
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_xpath(‘//*[@name=“wd”]’).send_keys(“xpth中name定位”)

(3)xpath中的class定位
格式:d.find_element_by_xpath(‘//[@class=“s_ipt”]‘).send_keys(“xpth中class定位”)
案例:
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_xpath(’//
[@class=“s_ipt”]’).send_keys(“xpth中class定位”)

(4)xpath中的其他定位
格式:d.find_element_by_xpath(‘//[@autocomplete=“off”]‘).send_keys(“xpth中其他定位”)
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_xpath(’//
[@autocomplete=“off”]’).send_keys(“xpth中其他定位”)

(5)xpath中的组合定位(and)
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_xpath(‘//*[@autocomplete=“off” and @maxlength=“255”]’).send_keys(“xpth中组合定位”)

(6)xpath中层级定位
上上级://[@id=“form”]
上一级:span ://
[@id=“form”]/span[1]
自己://[@id=“form”]/span[1]/input[1]
案例:
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_xpath('//
[@id=“form”]/span[1]/input[1]').send_keys(“层级定位”)

=====================================
css定位详解:
css 复制页面元素=右键copy==copy selectot
css的:#kw
(1)场景1 css中的id定位
情况1:id简写
案例1
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_css_selector(“#kw”).send_keys(“id 简写#表示”)
情况2:id 全称
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_css_selector(“[id=‘kw’]”).send_keys(“id全称定位”)

(3)场景1 css中的clss定位
情况1:class简写
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_css_selector(‘.s_ipt’).send_keys(“class简写定位”)

情况2:class全称
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_css_selector(‘[class=“s_ipt”]’).send_keys(“class全称定位”)

情况3:name全称定位
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_css_selector(“[name=‘wd’]”).send_keys(“name全称定位”)

情况4:其他属性全称定位
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_css_selector(“[autocomplete=‘off’]”).send_keys(“其他属性全称定位”)

情况5:组合属性全称定位
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_css_selector(“[autocomplete=‘off’][name=‘wd’]”).send_keys(“组合属性全称定位”)

情况6:层级定位
情况1:上上级定位
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_css_selector(‘form>span>input’).send_keys(“上上级定位”)

情况1:上级定位
from selenium import webdriver #导入selenium库 中webdriver 函数
from time import * #导入time模块
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.find_element_by_css_selector(‘span>input’).send_keys(“上级定位”)

==============================
拓展知识:(不讲解)
elements是复数,返回的是一个列表
0.id复数定位find_elements_by_id(self, id_)
1.name复数定位find_elements_by_name(self, name)
2.class复数定位find_elements_by_class_name(self, name)
3.tag复数定位find_elements_by_tag_name(self, name)
4.link复数定位find_elements_by_link_text(self, text)
5.partial_link复数定位find_elements_by_partial_link_text(self, link_text)
6.xpath复数定位find_elements_by_xpath(self, xpath)
7.css复数定位find_elements_by_css_selector(self, css_selector

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金牌j软件测试培训师肖sir

作为一个名资深IT搬运工

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值