UI自动化学习笔记- Selenium元素定位及元素操作
一、元素定位
1. 如何进行元素定位?
元素定位就是通过元素的信息或元素层级结构来定位元素的
2.定位工具
浏览器开发者工具
3.元素定位方式
Selenium提供了八种定位元素方式
- id
- name
- class_name(使用元素的class属性定位)
- tag_name(标签名 <标签名 ..../>)
- link_text(定位超链接a标签)
- partial_link_text(定位超链接 a标签 模糊)
- xpath(基于元素路径)
- css(元素选择器)
3.1 id定位
说明:id定位就是通过元素的id属性来定位元素,HTML规定id属性在整个HTML文档中必须是唯一的
前提:元素有id属性
id一般情况下在当前页面中是唯一的
id定位方法
element = driver.find_element_by_id(id)
案例
需求:打开一个注册页 ,完成以下操作
- 使用id定位,输入用户名
- 使用id定位,输入密码
- 3秒后关闭浏览器窗口
案例解析:
# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器对象
driver = webdriver.Chrome()
# 打开URL
# 注意:\反斜杠在python中是转义字符 r:修饰的字符串,如果字符串中有转义字符,不进行转义使用
url = 'http://confluence.huisaas.com/'
driver.get(url)
# 查找用户名元素
username = driver.find_element_by_id('os_username')
# 查找密码元素
password = driver.find_element_by_id('os_password')
# 用户名输入
username.send_keys('admin')
# 密码输入
password.send_keys('123456')
# 暂停3秒
sleep(3)
# 退出浏览器驱动
driver.quit()
3.2 name定位
说明:name定位就是根据元素name属性来定位。HTML文档中name的属性值是可以重复的
前提:元素有name属性
name定位方法
element = driver.find_element_by_name(name)
3.3 class_name定位
说明:class_name定位就是根据元素class属性值来定位元素。HTML通过使用class来定义元素的样式
前提:元素有class属性
注意:如果class有多个属性值,只能使用其中一个
class_name定位方法
element = driver.find_element_by_class_name(class_name)
3.4 tag_name定位
说明:tag_name定位就是通过标签名来定位
HTML本职就是由不同的tag组成,每一种标签一般在页面中会存在多个,所以不方便进行精准定位,一般很少使用
tag_name定位方法
element = driver.find_element_by_tag_name(tag_name)
# 如果存在多个相同标签,则返回符合条件的第一个标签
案列
需求:打开一个注册页 ,完成以下操作
- 使用tag_name定位,输入用户名
注意:页面中如果存在多个相同的标签名,默认返回第一个标签
案列解析
from selenium import webdriver
from time import sleep
# 获取浏览器对象
driver = webdriver.Chrome()
# 打开URL
url = 'http://confluence.huisaas.com/'
driver.get(url)
# 查找用户名元素,输入用户名
driver.find_element_by_tag_name('imput').send_keys('admin')
# 暂停3秒
sleep(3)
# 退出浏览器驱动
driver.quit()
3.5 link_text定位
说明:link_text定位是专门用来定位超链接元素(标签< /a>),并且是通过超链接的文本内容来定位元素
UI自动化学习笔记- Selenium元素定位及元素操作的更多相关文章
- UI自动化学习笔记- Selenium元素等待(强制等待、显示等待、隐式等待)
一.元素等待 1. 元素等待 1.1 什么是元素等待 概念:在定位页面元素时如果未找到,会在指定时间内一直等待的过程 意思就是:等待指定元素已被加载出来之后,我们才去定位该元素,就不会出现定位失败的现 ...
- UI自动化学习笔记- Selenium一些特殊操作的处理
一.特殊操作处理 1. 下拉选择框操作 1.1 如何操作下拉选择框 实现方式一 思路:先定位到要操作的option元素,然后执行点击操作 driver.find_element_by_css_sele ...
- UI自动化学习笔记- PO模型介绍和使用
一.PO模型 1.PO介绍:page(页面) object(对象) 在自动化中,Selenium 自动化测试中有一个名字经常被提及 PageObject (思想与面向对象的特征相同),通常PO 模型可 ...
- UI自动化学习笔记- UnitTest单元测试框架详解
一.UnitTest基本使用 1. UnitTest框架 1.1 什么是框架 说明: 框架英文单词frame 为解决一类事情的功能集合 1.2什么是UnitTest框架 概念:UnitTest是pyt ...
- UI自动化学习笔记- 日志相关操作
一.日志相关 1.日志 概念:日志就是用于记录系统运行时的信息,对一个事件的记录,也称log 1.1 日志的作用 调试程序 了解系统程序运行的情况,是否正常 系统程序运行故障分析与问题定位 用来做用户 ...
- Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」
1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)
转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...
- selenium webdriver学习(四)------------定位页面元素(转)
selenium webdriver学习(四)------------定位页面元素 博客分类: Selenium-webdriver seleniumwebdriver定位页面元素findElemen ...
- python ui自动化之元素定位和常用操作
做ui自动化的最基础的就是页面元素定位了,如果连页面元素都定位不到,自动化从何谈起呢?接下来我们就看看页面元素定位的方法吧!(这里就用百度页面来进行演示) 一.最通用的几种定位方式: 1.通过id定位 ...
随机推荐
- Linux查看PCIe版本及速率# lspci -vvv |grep Width -i
Linux查看PCIe版本及速率 https://www.cnblogs.com/lsgxeva/p/9542975.html# lspci -vvv |grep Width -i # lspci | ...
- CPU缓存是位于CPU与内存之间的临时数据交换器,它的容量比内存小的多但是交换速度却比内存要快得多。CPU缓存一般直接跟CPU芯片集成或位于主板总线互连的独立芯片上
一.什么是CPU缓存 1. CPU缓存的来历 众所周知,CPU是计算机的大脑,它负责执行程序的指令,而内存负责存数据, 包括程序自身的数据.在很多年前,CPU的频率与内存总线的频率在同一层面上.内存的 ...
- Linux_搭建NFS服务(基础)
[RHEL8]-NFSserver :[Centos7]-NFSclient !!!测试环境我们首关闭防火墙和selinux(NFSserver和NFSclient都需要) [root@localho ...
- Java 运行 Jar 包中java -cp 与 java jar 的区别
java -cp java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库和jar包,需要全路径到jar包,多个jar包之间连接符:window上分号"; ...
- 6.5 scp:远程文件复制
scp命令 用于在不同的主机之间复制文件,它采用SSH协议来保证复制的安全性.scp命令每次都是全量完整复制,因此效率不高,适合第一次复制时使用,增量复制建议使用rsync命令替代. scp ...
- Python数模笔记-PuLP库(1)线性规划入门
1.什么是线性规划 线性规划(Linear programming),在线性等式或不等式约束条件下求解线性目标函数的极值问题,常用于解决资源分配.生产调度和混合问题.例如: max fx = 2*x1 ...
- 圆盘时钟效果 原生JS
圆盘时钟 旋转时钟 数字时钟 写在前面 仿荣耀手机时钟,设计的同款时钟效果 实现效果 实现原理 数字时钟 利用Date内置对象获取当下的时间,通过处理呈现在页面上 这一步获取时间是非常简单的,通过Da ...
- 深入 Go 语言 defer 实现原理
转载请声明出处哦~,本篇文章发布于luozhiyun的博客: https://www.luozhiyun.com/archives/523 本文使用的go的源码 1.15.7 介绍 defer 执行规 ...
- 性能调优必备:NIO的优化实现原理
前言 我们就从底层的网络 I/O 模型优化出发,再到内存拷贝优化和线程模型优化,深入分析下 Tomcat.Netty 等通信框架是如何通过优化 I/O 来提高系统性能的. 网络 I/O 模型优化 网络 ...
- Cannot resolve class or package 'mysql’处理方法
在application.properties中配置mybatis_plus碰见报了这个错误 Cannot resolve class or package 'jdbc' 错误产生的原因 其实这个问题 ...