Selenium自动化元素定位方式与浏览器测试脚本

Selenium八大元素定位方法

Selenium可以驱动浏览器完成各种操作,比如模拟点击等。要想操作一个元素,首先应该识别这个元素。人有各种的特征(属性),我们可以通过其特征找到人,如通过身份证号、姓名、家庭住址。
同理,一个元素会有各种的特征(属性),我们可以通过这个属性找到这对象。

Selenium自动化元素定位方式与浏览器测试脚本_第1张图片

一、ID定位

通过元素的ID属性值来进行元素定位
(在html标准规范中ID值是唯一的)

定位方法:find_element_by_id(id) 

#id参数表示的是id的属性值;(定位的元素必须有ID属性)
driver.find_element_by_id("kw")

二、NAME定位

通过元素的NAME属性值来进行元素定位;
(name属性值在html页面中是可以重复的);

定位方法:find_element_by_name(name) 
#name参数表示的是name的属性值;
(定位元素必须有NAME属性)

driver.find_element_by_name("wd")

三、CLASS_NAME定位

通过元素的CLASS属性值来进行元素定位;
(class属性值在html页面中是可以重复的);

定位方法:find_element_by_class_name(class_name) 
#class_name参数表示的是class的属性值;
(定位元素必须有class属性)

注意:class属性值有多个时(用空格隔开),仅需要其中一个属性值:
(但若是使用Xpath属性定位时,需要用到全部属性值)
比如:driver.find_element_by_class_name(“s_ipt”)

四、TAG_NAME定位(不建议使用)

通过元素的标签名称来进行元素定位,在同一个html页面当中,相同标签元素会有很多;

定位方法:find_element_by_tag_name(tag_name) 
#tag_name参数表示的是元素的标签名;
(定位元素必须有标签名)
如果有重复的元素定位到的元素默认都是第一个;
例:driver.find_element_by_tag_name("input")

五、LINK_TEXT定位

通过超链接的全部文本信息来进行元素定位
(主要用来定位a标签);

定位方法:find_element_by_link_text(link_text) 
#link_text参数表示的是超链接(a标签)的全部文本内容;

driver.find_element_by_link_text("新闻")
driver.find_element_by_link_text("地图")

六,PARTIAL_LINK_TEXT定位(使用少)

通过超链接的局部文本信息来进行元素定位(主要用来定位a标签);

定位方法:find_element_by_partial_link_text(partial_link_text) 
#partial_link_text参数表示的是超链接(a标签)的局部文本内容;

例:find_element_by_partial_link_text("访问")
find_element_by_partial_link_text("网站")

七、定位一组元素

定位一组元素的方法

find_elements_by_id(id)
find_elements_by_tag_name(tag_name)

定位一组元素返回的值是一个里列表;

可以通过下标来使用列表中的元素;(下标以0开始)

8,XPATH定位及CSS定位

在页面当中,有一些元素无法通过元素的信息精准的定位到,所以需要Xpath定位

什么是XPATH
Xpath是XML Path的简称,是一门在XML文档中查找元素信息的语言;

XPATH定位策略
路径定位
属性定位
属性与逻辑结合
属性与层级结合

其中路径定位比较常用
定位方法:find_element_by_xpath(xpath) 
#xpath表达式

selenium自动化浏览器测试脚本源码:

from selenium import webdriver
import time

# 存放浏览器驱动路径
path = "/usr/local/chromedriver_mac_arm64/chromedriver"

# 启动浏览器
driver = webdriver.Chrome(path)

# 访问网址
url = "https://www.baidu.com"
driver.get(url)

# 等待1s
time.sleep(1)

# 找到搜索框元素、输入搜索内容“姚咩咩”并提交
driver.find_element_by_id('kw').send_keys('姚咩咩')

# 找到确定按钮框元素、并执行点击操作
driver.find_element_by_id('su').click()
time.sleep(2)

# 在浏览器的开发者模式下,找到需要定位元素的xpath并copy下来
# //*[@id="9"]/div/div[1]/h3/a  注意要把双引号改成单引号
result = driver.find_element_by_xpath("//*[@id='9']/div/div[1]/h3/a")

#点击该元素访问页面
result.click()

#睡眠20s后自动关闭网页
time.sleep(20)
driver.close()

你可能感兴趣的:(测试工程师,自动化测试,python,selenium,自动化)