元素定位---自动化测试

  1. 元素定位
    1. 根据id属性进行定位(唯一的id)
    2. name属性进行定位
    3. tag name (标签名)定位和class name(标签中的class属性)定位
    (1)使用class name 定位搜狗搜索框
    (2)使用tag name(标签名进行定位)
    4. css 定位
    5. X-path 定位
    6. link text (全名)定位 和 Partial link text(部分名)定位(链接名称)
    (1)link text 定位
    (2)partial link text 定位

元素定位

因为使用selenium 进行自动化测试,我们首先要定位到元素的位置,然后通过指定事件才能进行之后的执行,所以我们现在来学习一下常用的定位方法;这里定位的方法与 html 和 css 的属性密切相关。

1:根据 id 属性进行定位

如果我们需要操作的元素有 id 属性,我们可以通过id进行定位。

在这里插入图片描述

#  从selenium中引入webdriver驱动
from selenium import webdriver
# 引入事件包(为了之后能够观察自动化测试)
import time
driver = webdriver.Chrome()
url = "https://www.baidu.com"
driver.get(url)
# 通过id定位百度输入框,send_keys是在输入框中填充内容
driver.find_element_by_id("kw").send_keys("牛客网")
time.sleep(5)
# 关闭浏览器
driver.quit()

2:name 属性进行定位

在这里插入图片描述

#  从selenium中引入webdriver驱动
from selenium import webdriver
# 引入事件包(为了之后能够观察自动化测试)
import time
driver = webdriver.Chrome()
url = "https://www.baidu.com"
driver.get(url)driver.find_element_by_name("wd").send_keys("leetcode")
time.sleep(5)
# 关闭浏览器
driver.quit()

3:tag name (标签名)定位 和class name (标签中的class属性) 定位

(1)使用class name 定位搜狗 搜索框

from selenium import webdriver
import time
driver = webdriver.Chrome()
# 将窗口放到最大
driver.maximize_window()
driver.get("http://www.sogou.com")
# 定位搜素框并输入内容
driver.find_element_by_class_name("sec-input").send_keys("牛客网")
time.sleep(2)
driver.quit()

(2)使用 tag name(标签名进行定位)

在这里插入图片描述
注意:在使用这两种定位方式时需要在当前页没有重复出现,否则就会定位不到

4:css定位

使用css选择器来对元素进行定位,这里我们不需要自己去分析,只需要在浏览器上打开 开发者工具,然后定位到指定元素位置后,通过右键点击复制,然后复制 selecter 就可以了。

示例:通过 css 定位搜狗 搜索框

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.sogou.com")
# 定位搜素框并输入内容
driver.find_element_by_css_selector("#query").send_keys("牛客网")
time.sleep(3)
driver.quit()

5:X-path 定位
Xpath 是一种 在 Xml 文档中定位元素的语言,Xpath 扩展了上面 id 和 name 定位方式,提供了很多种可能性。通过X-path 也可以唯一定位一个元素。以Chrome 浏览器为例,F12 打开 开发者工具,定位到需要操作的元素(如 搜索框),然后右键鼠标,复制里面点击 Xpath即可。

通过X-path定位搜狗 搜索框

from selenium import webdriver
import time
driver = webdriver.Chrome()
# 将窗口放到最大
driver.maximize_window()
driver.get("http://www.sogou.com")
# 定位搜素框并输入内容
driver.find_element_by_xpath("//*[@id='query']").send_keys("牛客网")
time.sleep(2)
driver.quit()

6:link text (全名) 定位 和 Partial link text (部分名)定位(链接名称)

注意:这里的图片链接不能重复,重复也会定位不到

在这里插入图片描述
(1)link text 定位

from selenium import webdriver
import time
driver = webdriver.Chrome()
# 将窗口放到最大
driver.maximize_window()
driver.get("http://www.sogou.com")
# 定位链接全部文字并点击
driver.find_element_by_link_text("图片").click()
time.sleep(2)
driver.quit()

(2)partial link text 定位

from selenium import webdriver
import time
driver = webdriver.Chrome()
# 将窗口放到最大
driver.maximize_window()
driver.get("http://www.sogou.com")
# 定位链接b部分文字并点击
driver.find_element_by_partial_link_text("图").click()
time.sleep(2)
driver.quit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/793576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL-单行函数:数值函数、字符串函数、日期和时间函数、流程控制函数、加密与解密函数、MySQL信息函数、其他函数、单行函数练习

1.数值函数 1.1 基本的操作 SELECT ABS(-123),ABS(32),SIGN(-23),SIGN(43),PI(),CEIL(32.32),CEILING(-43.23),FLOOR(32.32), FLOOR(-43.23),MOD(12,5),12 MOD 5,12 % 5 FROM DUAL;1.2 取随机数 SELECT RAND(),RAND(),RAND(10),RAND(10),RAND(-1),RAND(-1) FROM DUAL;1.3 四…

Eclipse EMF教程(下)

Eclipse EMF教程(下) 翻译自:https://eclipsesource.com/blogs/tutorials/emf-tutorial/ 在接下来的部分中,我们将探索我们生成的代码的EMF API。 EMF API 在教程的这一部分,我们将探索EMF的API,包括生成…

C语言基础语法-教案16(从小白到劝退之结构体初阶)

最近给大家争取到一个 深夜福利 保证你在深夜手机刷到 嘎嘎香~ 那就是 大流量卡 缺点:月租太便宜 185GB~ 100分钟通话时长~ 长期套餐~ 畅想自由的气息 流量自由的同时还拥有超长通话,而且免费领取。 名额有限,咱们废话不多说直接上…

JS详解-手写Promise!!!

前言: 针对js的深入理解,作者学习并撰写以下文章,由于理解认知有限难免存在偏差,请大家指正!所有定义来自mdn。 Promise介绍: 对象表示异步操作最终的完成(或失败)以及其结果值. 描…

C++:逻辑运算符-非与或(19)

!非!a如果a为假,那么当前他就是真,如果a是真,那么他直接就是假&&与a&&ba与b都为真,那么就是真,如果两个里面有一个为假那么就是假||或a||ba或b有一个为真,那么就是真 非(!&…

【数据结构与算法】力扣 203. 移除链表元素

题目描述 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入: head [1,2,6,3,4,5,6], val 6 输出: [1,2,3,4,5]示例 2: 输…

一文弄懂CNN/RNN/GAN/Transformer等架构

1. 引言 本文旨在友好地介绍深度学习架构,包括卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN)、transformer 和 encoder-decoder 架构。 闲话少说,让我们直接开始吧。 …

【OpenCV】图像像素的遍历

1 前言 介绍两种遍历像素的方法(非指针、指针)。注意:.at() .ptr()的作用、用法。相关API: Mat对象.ptr() Mat对象.at() 2 代码及内容 #include "iostream" #include "opencv2/opencv.hpp"using namespac…

正则表达式(2)

文章目录 专栏导读1、贪婪与非贪婪2、转义匹配 专栏导读 ✍ 作者简介:i阿极,CSDN 数据分析领域优质创作者,专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》,本专栏针对大学生、初级数据分析工程师精…

国外服务器托管需要了解哪些信息

国外服务器托管服务提供了一种在国外租用并管理服务器的方式,适用于需要特定地域服务或对本地法规有特殊要求的企业和个人。那么想要进行国外服务器托管需要了解哪些信息呢?Rak部落小编为您整理发布国外服务器托管相关内容。 以下是一些关于国外服务器托管服务的详…

vue3表单参数校验+正则表达式

这里我们要实现在form表单中对表单项添加参数校验。 校验要求 我们的表单中有用户名、密码、电话号码、邮箱这四个项。 我们设置用户名为3到20位的非空字符 密码为3到25位非空字符 电话号码就用目前用的电话号码正则表达式,要求手机号码以 1 开头,第…

STM32单片机智能电表交流电压电流程序设计(电流 电压互感器TV1005M+TA1005M)

资料下载地址:STM32单片机智能电表交流电压电流程序设计(电流 电压互感器TV1005MTA1005M) 1、摘要 5、基于STM32F103单片机智能电表交流电压电流设计 本设计由STM32单片机核心板电路交流电压电流检测模块电路WIFI模块电路指示灯电路组成。 1、通过电压互感器TV100…

XML --java学习笔记

XML(全称EXtensible Markup Language&#xff0c;可扩展标记语言) 本质是一种数据的格式&#xff0c;可以用来存储复杂的数据结构&#xff0c;和数据关系 XML的特点 XML中的“<标签名>”称为一个标签或一个元素&#xff0c;一般是成对出现的XML中的标签名可以自己定义…

Doris实践——信贷系统日志分析场景的实践应用

目录 前言 一、早期架构演进 1.1 架构1.0 基于Kettle MySQL离线数仓 1.2 架构2.0 基于 Presto / Trino统一查询 二、基于Doris的新一代架构 三、新数仓架构搭建经验 3.1 并发查询加速 3.2 数仓底座建设 四、Doris助力信DolphinScheduler 和 Shell 贷业务场景落地 4.…

【Git】命令行使用体验大大优化的方法

Git的优化使用 相信很多人&#xff0c;在使用git作为版本管理工具时都会感受到它的方便&#xff0c;但是也会有一些问题困扰着我们&#xff0c;让我们觉得使用体验不是很好。我在使用git的过程中就发现了几个问题&#xff1a;写commit费时、怎么做多人开发的代码审查等等。今天…

基于springboot+vue+Mysql的在线考试系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

Linux操作系统之防火墙、redis安装

目录 一、防火墙 1、防火墙的类别 2、安装iptables(四表五链&#xff09; 一、防火墙 1、防火墙的类别 安全产品 杀毒 针对病毒&#xff0c;特征篡改系统中文件杀毒软件针对处理病毒程序 防火墙 针对木马&#xff0c;特征系统窃密 防火墙针对处理木马 防火墙分为两种 硬件…

Codeforces Round 824 (Div. 2) D. Meta-set

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e18, maxm 4e4 5; c…

设计模式——工厂模式01

工厂模式 定义&#xff1a;工厂模式是创建子类实例化对象的一种方式&#xff0c;屏蔽了创造工厂的内部细节。把创建对象与使用对象进行拆分&#xff0c;满足单一职责。如果需要向工厂中添加新商品&#xff0c; 只需要扩展子类再重写其工厂方法&#xff0c;满足开闭原则。 设计…

第十一届能源与环境研究国际会议-可再生能源走向脱碳化(ICEER 2024)即将召开!

能源和环境是当今世界至关重要的研究和教育领域&#xff0c;持续的气候危机和对可持续发展战略的迫切需求&#xff0c;需要从能源科学到地球工程等广泛领域的变革性工程解决方案和创新。ICEER 2024为来自学术界&#xff0c;研究中心和全球工业界的工程师&#xff0c;研究人员和…