江岸网站建设,中国企业500强2023,宁夏建网站报价,网站内容保护Selenium八大元素定位方法
Selenium可以驱动浏览器完成各种操作#xff0c;比如模拟点击等。要想操作一个元素#xff0c;首先应该识别这个元素。人有各种的特征#xff08;属性#xff09;#xff0c;我们可以通过其特征找到人#xff0c;如通过身份证号、姓名、家庭住…Selenium八大元素定位方法
Selenium可以驱动浏览器完成各种操作比如模拟点击等。要想操作一个元素首先应该识别这个元素。人有各种的特征属性我们可以通过其特征找到人如通过身份证号、姓名、家庭住址。 同理一个元素会有各种的特征属性我们可以通过这个属性找到这对象。 一、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_idid
find_elements_by_tag_nametag_name定位一组元素返回的值是一个里列表可以通过下标来使用列表中的元素下标以0开始8XPATH定位及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下来
# //*[id9]/div/div[1]/h3/a 注意要把双引号改成单引号
result driver.find_element_by_xpath(//*[id9]/div/div[1]/h3/a)#点击该元素访问页面
result.click()#睡眠20s后自动关闭网页
time.sleep(20)
driver.close()