IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> selenium-day02(元素定位01) -> 正文阅读

[Python知识库]selenium-day02(元素定位01)

一、元素定位概念

1.1元素定位的意义

UI自动化,就是要用程序来替代手工测试,只有准确的把握网站上的每一个元素(标签),才能进行自动化测试

1.2如何进行元素定位

两种方式

  • 通过元素的信息进行定位: 元素的信息就是指元素的标签名以及元素的属性
  • 通过元素的层级进行定位:元素的层级结构就是指元素之间相互嵌套的层级结构
  • 定位的原则: 尽量是获取到唯一的元素,而不是获取到多元素(列表)之后,再用下标去定位

二、元素定位的方式

2.1 浏览器开发者工具介绍

  • 浏览器开发者工作主要用来查看元素的信息, 同时也可以查看接口的相关信息。
  • 浏览器开发者工作不需要安装,浏览器自带.
  • 浏览器开发者工具的启动:
    • 直接按F12 不区分浏览器
    • 通过右键的方式来启动浏览器开发者工具 (谷歌浏览器右键选择“检查”, 火狐浏览器右键选择“检查元素”
  • 浏览器开发者工具使用
    • 点击 浏览器开发者工具左上角的 元素查看器按钮
    • 再点击想要查看的元素

2.2通过元素的信息定位

  • id定位
  • name定位
  • tag_name定位
  • class_name 定位
  • link_text定位
  • partail_link_text定位

如果有重复的元素,定位到的元素默认都是第一个元素( find_element … 开头的方法获取的都是一个元素)

2.2.1 id定位
  • 通过元素的id进行定位 注意html规范中,id是唯一的

  • 前提: 元素必须有id

  • 方法:find_element_by_id(id) #id参数表示元素的id值 element方法都是查询一个元素的
    在这里插入图片描述

#导入selenium
import time

from selenium import webdriver
#创建并实例化谷歌浏览器驱动对象
driver = webdriver.Chrome()
#打开指定文件路径的本地项目
driver.get("file:///C:/Users/Administrator/Desktop/pagetest/%E6%B3%A8%E5%86%8CA.html")
#通过id定位账号元素,输入admin
driver.find_element_by_id("userA").send_keys("admin")
#休眠3秒
time.sleep(3)
#退出驱动(释放系统资源)
driver.quit()
2.2.2 name定位
  • 通过元素的name属性值,进行定位
  • 前提: 元素必须有name属性
  • 方法:find_element_by_name(name) #name参数表示元素的name值 element方法都是查询一个元素的

在这里插入图片描述

#导入selenium
import time

from selenium import webdriver
#创建并实例化谷歌浏览器驱动对象
driver = webdriver.Chrome()
#打开指定文件路径的本地项目
driver.get("file:///C:/Users/Administrator/Desktop/pagetest/%E6%B3%A8%E5%86%8CA.html")
#通过name属性定位 账号,并输入admin
driver.find_element_by_name("userA").send_keys("admin")
#通过name属性定位 密码,并输入123456
driver.find_element_by_name("passwordA").send_keys("123456")
#休眠5秒
time.sleep(5)
#退出驱动(释放系统资源)
driver.quit()

2.2.3 class_name定位
  • 通过元素的class属性值进行元素定位 class属性值是可重复的
  • 前提:元素必须要有class属性
  • 方法: find_element_by_class_name(class_name) # class_name参数表示的是class的其中一个属性值
    在这里插入图片描述
#导入selenium
import time

from selenium import webdriver
#创建并实例化谷歌浏览器驱动对象
driver = webdriver.Chrome()
#打开指定文件路径的本地项目
driver.get("file:///C:/Users/Administrator/Desktop/pagetest/%E6%B3%A8%E5%86%8CA.html")
# 1).通过class_name定位电话号码A,并输入:18611111111
driver.find_element_by_class_name("telA").send_keys("18611111111")
# 2).通过class_name定位电子邮箱A,并输入:123@qq.com
driver.find_element_by_class_name("dzyxA").send_keys("123@qq.com")
#休眠5秒
time.sleep(5)
#退出驱动(释放系统资源)
driver.quit()

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

    这种定位元素的方式不建议在工作当中使用

  • 方法: find_element_by_tag_name(tag_name) # tag_name表示的是元素的标签名
    在这里插入图片描述

    #导入selenium
    import time
    
    from selenium import webdriver
    #创建并实例化谷歌浏览器驱动对象
    driver = webdriver.Chrome()
    #打开指定文件路径的本地项目
    driver.get("file:///C:/Users/Administrator/Desktop/pagetest/%E6%B3%A8%E5%86%8CA.html")
    #通过tag_name去定位账号元素,并输入admin
    #实际这种方式会获取到大量input元素,但是find_element 只会默认取第一个
    driver.find_element_by_tag_name("input").send_keys("admin")
    
    #休眠5秒
    time.sleep(5)
    #退出驱动(释放系统资源)
    driver.quit()
    
    

    2.2.5 link_text定位

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

    • 方法: find_element_by_link_text(link_text) # link_text参数代表的是a标签的全部文本内容。

在这里插入图片描述

#导入selenium
import time

from selenium import webdriver
#创建并实例化谷歌浏览器驱动对象
driver = webdriver.Chrome()
#打开指定文件路径的本地项目
driver.get("file:///C:/Users/Administrator/Desktop/pagetest/%E6%B3%A8%E5%86%8CA.html")
#休眠3秒
time.sleep(3)
# 1).通过link_text定位超链接(全部文本内容)
driver.find_element_by_link_text("新浪").click()
#休眠3秒
time.sleep(3)
#退出驱动(释放系统资源)
driver.quit()

2.2.6 partial_link_text定位
  • 通过超链接的局部文本信息进行元素定位,主要用来定位a标签
  • 定位方法:find_element_by_partial_link_text(partial_link_text) # partial_link_text表示的是a标签 的局部文本内容
    在这里插入图片描述
#导入selenium
import time

from selenium import webdriver
#创建并实例化谷歌浏览器驱动对象
driver = webdriver.Chrome()
#打开指定文件路径的本地项目
driver.get("file:///C:/Users/Administrator/Desktop/pagetest/%E6%B3%A8%E5%86%8CA.html")
#休眠3秒
time.sleep(3)
# 1).通过 parital_ink_text定位超链接(局部文本内容)
driver.find_element_by_partial_link_text("网站").click()
#休眠3秒
time.sleep(3)
#退出驱动(释放系统资源)
driver.quit()

2.3定位一组元素

find_elements…开头的方法就是获取一组元素,返回列表,可通过下标获取指定元素

  • 定位一组元素的方法:

    find_elements_by_id(id)

    find_elements_by_name(name)

    find_elements_by_class_name(class)

    find_elements_by_tag_name(tag_name)

    find_elements_link_text(text)

    find_elements_partial_link_text(text)

    以下三种涉及元素层级定位方式,后期再讲

    find_elements(value)

    find_elements_by_xpath(xpath表达式)

    find_elements_by_css_selector(css表达式)

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

  • 可以通过下标来使用列表中的元素

  • 下标是从0开始。

#导入selenium
import time

from selenium import webdriver
#创建并实例化谷歌浏览器驱动对象
driver = webdriver.Chrome()
#打开指定文件路径的本地项目
driver.get("file:///C:/Users/Administrator/Desktop/pagetest/%E6%B3%A8%E5%86%8CA.html")
# 使用tag_name定位密码输入框(第二个input标签),并输入:123456
inputs = driver.find_elements_by_tag_name("input")
print(inputs)
inputs[1].send_keys("123456")
# 等待3s(代表业务操作)
time.sleep(3)     # 通过快捷导包的方式导入time模块,  光标要在time后面再按alt+enter
# 退出浏览器驱动(释放系统资源)
driver.quit()

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:12:00  更:2021-08-09 10:13:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 10:48:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码