自动化测试web库(元素定位、元素操作、浏览器操作)

按照谷歌浏览器 Chrome :https://googlechromelabs.github.io/chrome-for-testing/

Chrome使用技巧:

1、找到自己想要的标签
打开检查,点击箭头,再点击你想要点击的地方
在这里插入图片描述
在这里插入图片描述
2、直接在浏览器上查询,看看是否查询成功
可以看到有多少元素,方面定位自己想要的,在Elements里面按 Ctrl + F
可以看到下面的框,在里面写搜索。

在这里插入图片描述
也可以右键直接复制查询命令,不过有时候会看不懂里面的内容。最好自己写。
在这里插入图片描述
使用Console进行标签查询,下面是例子
在这里插入图片描述

一、元素定位

xpath复制示例
在这里插入图片描述
主要查询方式:
1、By.CSS_SELECTOR 查询
2、By.XPATH 查询

from selenium import webdriver
from selenium.webdriver.common.by import Byimport time# 初始化
driver = webdriver.Chrome()
# 浏览器最大化
driver.maximize_window()# 获取地址 为了方便 后面写百度就是使用百度网站运行示例,其他以B站为例
driver.get("https://www.baidu.com/")
# driver.get("https://www.bilibili.com/")# 等待页面元素加载完毕,类似设置等待超时时间
driver.implicitly_wait(30)# 所有查询最好都在浏览器中的Console查询一下,看看有没有问题# By.ID查询 (有点框架ID是自动生成的,所以有时候无法使用这招,这种情况非常多。 特殊情况:有的前端程序员失误把id写重复了,也会有问题,这种情况非常少)
# driver.find_element(By.ID, 'kw').send_keys("百度")
# driver.find_elements 是查询后返回的 列表,然后进行你想要的操作# By.TAG_NAME查询
# <input class="nav-search-input" type="text" autocomplete="off" accesskey="s" maxlength="100"    这里换行了
# x-webkit-speech="" x-webkit-grammar="builtin:translate" value="" placeholder="自动化测试" title="自动化测试">
# B站是真讲究,专门给自动化测试程序员安排个标签进行测试,泪目了
# driver.find_element(By.TAG_NAME, 'input').send_keys("B站")# By.NAME查询  根据标签内的name去查询
# 希望查询的标签:<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
# driver.find_element(By.NAME, 'wd').send_keys("百度")# By.LINK_TEXT查询  根据可点击的文本去查询
# 希望查询的标签:<a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新闻</a>
# driver.find_element(By.LINK_TEXT, '新闻').click()
# 包含该文本查询
# driver.find_element(By.PARTIAL_LINK_TEXT, '新').click()# 鼠标单次点击 .click()
# 键盘模拟 .send_keys("输入文本内容")
# 左键双击
# actions = ActionChains(drver)  # 初始化双击
# actions.double_click(i).perform()  # 真双击  i是你想要点击的内容# By.CSS_SELECTOR查询
# di    字符串前面加 #  例如: #kw                   键盘 .send_keys("百度")
# class 字符串前面加 .  例如: .nav-search-input     键盘 .send_keys("B站")
# 属性   字符串加 []    例如: [name="wd"]           键盘 .send_keys("百度")
# driver.find_element(By.CSS_SELECTOR, '[name="wd"]').send_keys("百度")# 查询示例:
# 标签.类别.类别.类别
# 希望查询的标签:<a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新闻</a>
# driver.find_element(By.CSS_SELECTOR, 'a.mnav.c-font-normal.c-color-t').click()# 组合一下
# driver.find_element(By.CSS_SELECTOR, 'input.s_ipt').send_keys("百度")# 百度为例子
# 标签  标签名[属性="内容"]
# driver.find_element(By.CSS_SELECTOR, 'a[href="http://news.baidu.com"]').click()
# 模糊匹配 包含 *   (重点:最常用)
# driver.find_element(By.CSS_SELECTOR, 'a[href*="news.baidu"]').click()
# 模糊匹配 开头 ^
# driver.find_element(By.CSS_SELECTOR, 'a[href^="http://news"]').click()
# 模糊匹配 结尾 $
# driver.find_element(By.CSS_SELECTOR, 'a[href$="news.baidu.com"]').click()# 定位子元素
# 绝对路径 层层下去 查找  父子 >  后代 空格
# html>body>div>div>div:nth-child(3)>a:nth-child(1)
# 顺序选择第几个 :nth-child(1)
# 演示:百度
# driver.find_element(By.CSS_SELECTOR, 'html>body>div>div>div:nth-child(3)>a:nth-child(1)').click()# By.XPATH查询 xml路径查询
# 上图有复制的截图 (快捷方式)
# driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[3]').click()# 目标标签:<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
# 绝对路径是 / 一级一级向下查找
# driver.find_element(By.XPATH, '/html/body/div/div/div[3]/a').click()
# 相对路径 //  @后是属性  带空格的类连同空格都复制进来
# driver.find_element(By.XPATH, '//input[@id="kw"]').send_keys("百度")
# 相对路径 多个属性组合查询 and or
# driver.find_element(By.XPATH, '//input[@id="kw" and @name="wd" and @class="s_ipt" and '
#                               '@maxlength="255"]').send_keys("百度")
# 相对路径 多个属性组合+下标  补充:/.. 是查询上一级
# driver.find_element(By.XPATH, '//div[@id="s-top-left"]/a[4]').click()
# 相对路径 文本等于  text()是个函数
# driver.find_element(By.XPATH, '//a[text()="新闻"]').click()
# 相对路径 文本包含  text()是个函数  contains()是个函数  注意是逗号
driver.find_element(By.XPATH, '//a[contains(text(),"新闻")]').click()# # 获取页面上的源码
# page_source = driver.page_source
# print(page_source)time.sleep(3)

二、元素操作

select 下拉框操作
模拟键盘的常用操作
点击弹窗
等待元素出现后,再点击
根据url下载内容和保存

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import requests# 初始化
driver = webdriver.Chrome()
# 浏览器最大化
driver.maximize_window()# 示例网址1
# driver.get("https://www.iviewui.com/view-ui-plus/component/form/radio")#
# # 等待页面元素加载完毕,类似设置等待超时时间
# driver.implicitly_wait(30)
#
# # 相对查询
# driver.find_elements(By.XPATH, '//input[@class="ivu-radio-input" and @type="radio"]')[0].click()
# time.sleep(2)
# driver.find_elements(By.XPATH, '//input[@class="ivu-radio-input" and @type="radio"]')[2].click()
# time.sleep(2)
# driver.find_elements(By.XPATH, '//input[@class="ivu-radio-input" and @type="radio"]')[3].click()# 示例网址2
# https://sahitest.com/demo/selectTest.htm
# driver.get("https://sahitest.com/demo/selectTest.htm")'''
<select id="s1">
<option value="-1">--SELECT--</option>
<option value="46">Business Phone</option>
<option value="47">Cell Phone</option>
<option value="48">Email</option>
<option value="49">Fax</option>
<option value="51">Home Phone</option>
<option value="50">Mail</option>
</select>
'''# select 下拉框操作
# select = Select(driver.find_element(By.ID, 's1'))
# 方式一 第几个
# select.select_by_index(0)  # 没变化是因为第一个就是这个
# select.select_by_index(1)
# select.select_by_index(2)
# select.select_by_index(3)
# select.select_by_index(4)
# select.select_by_index(5)
# select.select_by_index(6)
# 方式二 通过value=  注意:不是下标
# select.select_by_value('-1')  # 没变化是因为第一个就是这个
# select.select_by_value('46')
# select.select_by_value('47')
# select.select_by_value('48')
# select.select_by_value('49')
# select.select_by_value('50')
# select.select_by_value('51')
# 方式三 通过内容
# select.select_by_visible_text("--SELECT--")  # 没变化是因为第一个就是这个
# select.select_by_visible_text("Business Phone")
# select.select_by_visible_text("Cell Phone")  # 后面就不演示了# 清空输入框内的内容
# 获取地址 为了方便 后面写百度就是使用百度网站运行示例
# driver.get("https://www.baidu.com/")
# driver.implicitly_wait(30)
# driver.find_element(By.ID, 'kw').send_keys("百度")
# time.sleep(2)
#
# # 方式一:清空默认内容
# driver.find_element(By.ID, 'kw').clear()
# time.sleep(2)
# 方法二:通过键盘全选,然后直接输入新的内容,就不用clear了
# driver.find_element(By.ID, 'kw').send_keys(Keys.CONTROL + 'a')
# driver.find_element(By.ID, 'kw').send_keys(Keys.BACKSPACE)# 常用操作:# 1、回车键:Keys.ENTER
# 2、删除键:Keys.BACK_SPACE
# 3、空格键:Keys.SPACE
# 4、制表键:Keys.TAB
# 5、回退键:Keys.ESCAPE
# 6、刷新键:Keys.F5# 1、全选:send_keys(Keys.CONTROL,'a')
# 2、复制:send_keys(Keys.CONTROL,'c')
# 3、粘贴:send_keys(Keys.CONTROL,'v')
# 4、剪切:send_keys(Keys.CONTROL,'x')# 弹窗
driver.get("https://sahitest.com/demo/promptTest.htm")
driver.find_element(By.NAME, 'b1').click()
# 看一下弹窗上的文字
print(driver.switch_to.alert.text)
time.sleep(2)
driver.switch_to.alert.send_keys("输入测试一下")  # 在输入框是看不到打字的, 但是在确定后会显示出来的
time.sleep(2)
# 把弹窗的 确定点掉
driver.switch_to.alert.accept()
# 把弹窗的 取消点掉
# driver.switch_to.alert.dismiss()# 下面没有演示
# # 先判断这个元素是否出现,等待出现后在操作
# # 最多等待60秒
# wait = WebDriverWait(driver, 60)
# # 等待(判断)
# output_div = wait.until(EC.visibility_of_element_located((By.TAG_NAME, 'img')))# 根据url 保存图片
# img_response = requests.get(url_i)
# if img_response.status_code == 200:
#     file_name = url_i.split("/")[-1]
#     output_path = os.path.join(output_folder, file_name)
#     with open(output_path, 'wb') as f:
#         f.write(img_response.content)
#     print(f"Downloaded {url_i} to {output_path}")time.sleep(3)

三、浏览器操作

待更新

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

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

相关文章

【算法刷题 | 贪心算法08】4.29(划分字母区间、合并区间)

文章目录 14.划分字母区间14.1题目14.2解法&#xff1a;贪心14.2.1贪心思路14.2.2代码实现 15.合并区间15.1题目15.2解法&#xff1a;贪心15.2.1贪心思路15.2.2代码实现 14.划分字母区间 14.1题目 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一…

msf练习

一、什么是msfvenom&#xff1f; msfvenom是msf中的一个独立的负载生成器&#xff0c;它可以利用msf中的payloads和encoders来生成各种格式的木马文件&#xff0c;并在目标机上执行&#xff0c;配合meterpreter在本地监听上线。msfvenom是msfpayload和msfencode的结合体&#…

【C++】深入了解C++内存管理

个人主页&#xff1a;救赎小恶魔 欢迎大家来到小恶魔频道 好久不见&#xff0c;甚是想念 今天我们要深入讲述类与对象的初始化列表以及隐式类型转换 目录 1.C的内存分布 2.C/C言中动态内存管理方式 1.C语言的管理方式 2.C的管理方式 new delete 3.operator new与ope…

IntelliJ IDEA - Auto filling Java call arguments 插件教程

首先&#xff0c;安装该插件&#xff0c;下载完毕后重启 IDEA 当 userService 中方法需要参数的时候&#xff0c;我们一般都是自己手动写这些参数&#xff0c;是很费劲的。因此就出现了一个插件解决这类问题 Auto filling Java call arguments 光标点击需要填写参数的位置 Alt …

【酱浦菌-爬虫项目】python爬取彼岸桌面壁纸

首先&#xff0c;代码导入了两个库&#xff1a;requests和parsel。这些库用于处理HTTP请求和解析HTML内容。 然后&#xff0c;它定义了一个变量url&#xff0c;指向网站’樱花2024年4月日历风景桌面壁纸_高清2024年4月日历壁纸_彼岸桌面’。 接下来&#xff0c;设置了一个HTT…

变革 Perplexica:AI驱动的问答搜索引擎

Perplexica是一个开源的人工智能搜索工具&#xff0c;也可以说是一款人工智能搜索引擎&#xff0c;它深入互联网以找到答案。受Perplexity AI启发&#xff0c;它是一个开源选择&#xff0c;不仅可以搜索网络&#xff0c;还能理解您的问题。它使用先进的机器学习算法&#xff0c…

帕累托森林李朝政博士受聘「天工开物开源基金会」专家顾问

导语&#xff1a; 开源铸造了当前最前沿的科技引擎。开源驱动了软件生态&#xff0c;也以指数级速度驱动硬件生态。 3月中旬&#xff0c;天工开物开源基金会授予李朝政博士专家顾问&#xff0c;表彰他积极推动参与中国智能软件生态的建设&#xff0c;期待一起共筑未来新生态。…

Axure实现tab页面切换功能

1. 实现效果 2. 实现原理 创建两个标签&#xff0c;并实现点击时选中状态点击时&#xff0c;设置面板状态 3. 实现步骤 3.1 实现可切换的标签 在页面上拖拽两个矩形作为两个tab标签&#xff0c;并命名 tab1 和 tab2 设置每个矩形的边框显示&#xff0c;只显示下边框即可 …

pyQt5 和 Qt Designer 实现登录注册案例

Qt Designer 设计页面: 通过 PyQt5 手写 1. 先引入用到的库 from PyQt5.QtWidgets import * import sys 2. 创建应用,窗口, 设置窗口 # 创建应用 app QApplication(sys.argv) # 创建窗口 w QWidget()# 设置窗口标题 w.setWindowTitle("注册登录")# 展示 w.sho…

使用STM32CubeMX对STM32F4进行串口配置

目录 1. 配置1.1 Pin脚1.2 RCC开启外部晶振1.3 时钟1.4 串口配置 2. 代码2.1 默认生成代码2.1 开启串口中断函数2.3 接收中断2.4 接收回调函数2.5 增加Printf 的使用 1. 配置 1.1 Pin脚 1.2 RCC开启外部晶振 1.3 时钟 外部使用8MHz晶振 开启内部16MHz晶振 使用锁相环 开启最高…

Android CalendarView助你打造精美的Android日历应用

Android CalendarView助你打造精美的Android日历应用 1. 引言 移动应用中的日历功能对于用户来说至关重要&#xff0c;它不仅是时间管理的工具&#xff0c;还能帮助用户记录重要事件和安排活动。因此&#xff0c;一个高效、易用的日历控件对于移动应用的成功至关重要。 传统…

计算机视觉 | 交通信号灯状态的检测和识别

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在使用计算机视觉技术检测交通信号灯的状态&#xff0c;主要针对红色和绿色信号灯的识别。通过分析输入图像中的像素颜色信息&#xff0c;利用OpenCV库实现对信号灯状态的检测和识别。 目录 一、项目背景 二、项目功能…

大数据学习笔记14-Hive基础2

一、数据字段类型 数据类型 &#xff1a;LanguageManual Types - Apache Hive - Apache Software Foundation 基本数据类型 数值相关类型 整数 tinyint smallint int bigint 小数 float double decimal 精度最高 日期类型 date 日期 timestamps 日期时间 字符串类型 s…

[Algorithm][链表][两数相加][两两交换链表中的节点][重排链表][合并K个升序链表][K个一组翻转链表] + 链表原理 详细讲解

目录 0.常用技巧1.两数相加1.题目链接2.算法原理详解3.代码实现 2.两两交换链表中的节点1.题目链接2.算法原理详解3.代码实现 3.重排链表1.题目链接2.算法原理详解3.代码实现 4.合并 K 个升序链表1.题目链接2.算法原理详解3.代码实现 5.K 个一组翻转链表1.题目链接2.算法原理详…

蓝网科技临床浏览系统 deleteStudy SQL注入漏洞复现(CVE-2024-4257)

0x01 产品简介 蓝网科技临床浏览系统是一个专门用于医疗行业的软件系统,主要用于医生、护士和其他医疗专业人员在临床工作中进行信息浏览、查询和管理。 0x02 漏洞概述 蓝网科技临床浏览系统 deleteStudy接口处SQL注入漏洞,未经身份验证的恶意攻击者利用 SQL 注入漏洞获取…

喀秋莎Camtasia2023中文破解Crack下载附安装教程 2023免费补丁百度云 电脑版注册机提取

Camtasia2023破解版是一款备受好评的电脑录屏软件&#xff0c;主要用于教授课程&#xff0c;培训他人&#xff0c;以及进行沟通和屏幕分享。内置视频编辑器支持拖放文本&#xff0c;提供了强大的屏幕录像、视频的剪辑和编辑、视频菜单制作、视频剧场和视频播放功能等&#xff0…

如何编写测试用例

总结 测试用例需求来源 文档 用户角度 编写测试用例步骤 分析需求 写测试点 对需求的拆分 辅助完成测试用例的编写 编写测试用例 编写测试用例原则 能看懂 能执行 测试结果状…

【研发管理】产品经理知识体系-产品创新中的市场调研

导读&#xff1a;在产品创新过程中&#xff0c;市场调研的重要性不言而喻。它不仅是产品创新的起点&#xff0c;也是确保产品成功推向市场的关键步骤。对于产品经理系统学习和掌握产品创新中的市场调研相关知识体系十分重要。 目录 概述&#xff1a;市场调研重要性 1、相关概…

大象机器人开源协作机械臂myCobot 630 全面升级!

1. 开篇概述 在快速发展的机器人技术领域中&#xff0c;Elephant Robotics的myCobot 600已经证明了其在教育、科研和轻工业领域的显著适用性。作为一款具备六自由度的机械臂&#xff0c;myCobot 600以其600mm的工作半径和2kg的末端负载能力&#xff0c;满足了多样化的操作需求。…

人工 VS AGV无人搬运机器人,AGV赋能中国智能制造

agv 机器人作为智能制造的重要抓手&#xff0c;正在渗透到各个传统行业&#xff0c;成为我国制造业转型升级的焦点。未来&#xff0c;智能AGV将不仅仅是简单的把货物搬运到指定的位置&#xff0c;而是要把5G技术、大数据、物联网、云计算等贯穿于产品的设计中&#xff0c;让智能…