selenium——一个用于web应用程序测试的工具

2023-10-30

selenium是什么?他的前世今生是什么?他的作用是什么?他的原理是什么?啊哈哈???想知道,那还不赶紧去百度百科。

https://baike.baidu.com/item/selenium/18266

鉴于自觉地人少之又少,所以鄙人查询百般资料,总结一二。当然代码,纯手打!!!

selenium简介:
web应用程序的自动化测试工具
selenium是一个用于web应用程序测试的工具,selenium测试直接运行在浏览器中,
就想真正的用户在操作一样。
支持多种浏览器:IE(7,8,9,10,11),Mozilla Firefox,Safari,Google Chrome,Opera等
这个工具的主要功能包括:测试与浏览器的兼容性(测测你的应用程序看是否能够很好地工作在不同的浏览器和操作系统上。)
测试系统功能:创建回归测试检验软件功能和用户需求。
支持自动录制和自动生成java,Perl等不同语言的测试脚本。

功能:
1.框架底层使用JavaScipt模拟真实用户对浏览器进行操作。
测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,
就像真实用户所做的一样,从终端用户的角度测试应用程序。
2.使浏览器兼容性测试自动化成为可能,尽管在不同的浏览器上依然有细微的差别。
3.使用简单,可使用Java,python等多种语言编写用例脚本。

好处:Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。
通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序。
通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。
Selenium 的核心,也称browser bot,是用 JavaScript 编写的。
这使得测试脚本可以在受支持的浏览器中运行。
browser bot 负责执行从测试脚本接收到的命令,测试脚本要么是用 HTML 的表布局编写的,
要么是使用一种受支持的编程语言编写的。

WebDriver是一个用来进行复杂重复的web自动化测试的工具。
在配置Selenium的WebDriver前首先先选定测试的浏览器,
IE、Chrome、Firefox等主流浏览器。
不同的浏览器需要不同的驱动来实现。
Firefox是自带驱动,不需要下载驱动,IE、Chrome等需要下载相应的驱动。

哈哈哈有点多。下面来简单看看代码是如何实现web自动化的测试。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.firefox.options import Options as FOptions
from selenium.webdriver.common.action_chains import ActionChains

import time
import lxml.html
import requests
from urllib3 import response

options = FOptions()
#options.add_argument('-headless') #无头模式(不会打开web浏览器的页面,为了更加直观的看到效果,还是打开的好)
browser = webdriver.Firefox(executable_path="D:\geckodriver.exe",firefox_options=options)


#模拟浏览器打开百度
'''
browser.get('http://www.baidu.com')
time.sleep(3)
browser.close()
'''


#基本使用查找元素
'''
#获取中国的详情页
browser.get('http://example.webscraping.com/places/default/view/China-47')
#获得中国的邻国   (找到中国的邻国,解析HTML文件,进行匹配)
print (browser.find_element_by_xpath('//tr[@id="places_neighbours__row"]/td[@class="w2p_fw"]').text)
# 自动获取HTML页面
print(browser.page_source)
#
browser.get("http://example.webscraping.com/dynamic")
#获取网页国家   注意:解析HTML,根据 id= results 获取
print (browser.find_element_by_css_selector('#results').text)
time.sleep(3)
browser.close()
'''

#元素交互
'''
#获取淘宝网站
browser.get('https://www.taobao.com')
#根据 id= 'q' 找到input输入框
input = browser.find_element_by_id("q")
#在输入框中输入iPhone
input.send_keys('iphone')
time.sleep(5)
input.clear()                  #清空输入框
input.send_keys('ipad')        #自动输入ipad
time.sleep(5)
input.clear()                  #清空输入框
input.send_keys(u'华为笔记本')  #输入华为笔记本
#自动点击 根据class=btn-search 名字添加一个按钮事件
button = browser.find_element_by_class_name("btn-search")
button.click()                  #点击事件
time.sleep(5)
browser.close()
'''


#鼠标模拟悬停并点击
'''
#用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,
# 比如单击、双击、点击鼠标右键、拖拽等等。
# 而selenium给我们提供了一个类来处理这类事件——ActionChains
#首先需要了解ActionChains的执行原理,当你调用ActionChains的方法时,
# 不会立即执行,而是会将所有的操作按顺序存放在一个队列里,
# 当你调用perform()方法时,队列中的时间会依次执行。

browser.maximize_window()       #把浏览器窗口最大化,防止隐藏需要操作的内容
browser.get('http://example.webscraping.com')   #获得网站
artical = browser.find_element_by_link_text('Log In') #根据链接元素文本找到Log In
#鼠标事件
ActionChains(browser).move_to_element(artical).perform()
#example.webscraping.com/places/default/user/register?_next=/places/default/index
#?_next=/places/default/index待跳转链接 (注册后会自动跳转到默认页面,通常是首页)
menu = browser.find_element_by_xpath('//a[@href="/places/default/user/register?_next=/places/default/index"]')
menu.click()
'''

#ajax
'''
browser.get('http://example.webscraping.com/places/default/search')
#在页面中找到搜索输入框
input = browser.find_element_by_id('search_term')
input.send_keys('C')   #在输框中输入c
time.sleep(3)
#找到搜索按钮
button = browser.find_element_by_id('search')
button.click()   #添加一个点击事件
time.sleep(3)
#获取页面中相关的国家信息
print browser.find_element_by_css_selector('#results').text

'''

#动作链进阶
'''
browser.get("http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")
#找到表单 id=iframeResult 即两个待操作的图形所在的表单
browser.switch_to.frame('iframeResult')
source = browser.find_element_by_id('draggable')
target = browser.find_element_by_id('droppable')
actions = ActionChains(browser)

#动作链将一系列动作组织起来,形成一组测试,当调用perform的时候开始执行
actions.drag_and_drop(source,target)
actions.perform()
time.sleep(3)
t = browser.switch_to_alert()
print t.text
t.accept()
time.sleep(10)
browser.close()
'''

#执行JavaScript
'''
browser.get('http://www.taobao.com')
time.sleep(10)
#自动滑到页面的底部
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.execute_script('alert("kkk")')   #验证是否滑动  弹出文字
time.sleep(10)
browser.close()
'''




#休眠

#强制休眠 time.sleep(4)

#隐式休眠是全局的,如果找不到等待设置的秒数,再次找不到抛出异常
#使用是selenium自带的休眠方式
# browser.implicitly_wait(2)


#导入包用来检查页面元素是不是存在
from selenium.webdriver.common.by import By
#设置休眠
from selenium.webdriver.support.ui import WebDriverWait
#设置检查页面包含不包含该元素
from selenium.webdriver.support import expected_conditions as EC

#显式休眠
url = 'http://www.taobao.com'
browser.get(url)

wait = WebDriverWait(browser,10)


#查找页面元素    根据通过ID属性 当找到 q类型时停止休眠
input1 = wait.until(EC.presence_of_element_located((By.ID,'q')))

#根据css选择器,找到按钮btn-search会停止
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,".btn-search")))
#输出结果,表示成功
print (input1,button)

以上代码,注意注释部分,不要混乱。诸多不足,还望高人指点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

selenium——一个用于web应用程序测试的工具 的相关文章

随机推荐

  • 视频无损放大软件:Topaz Video Enhance AI Mac版(支持m1)

    Topaz Video Enhance AI for Mac是一款专业的AI视频无损放大软件 topaz video enhance ai mac版使用时间信息有效提高视频质量和细节 从而达到最好的视频放大 去隔行 降噪和还原效果 另外to
  • gitlab目录功能结构

    默认安装的gitlab 主要有四个目录 opt gitlab 主目录 etc gitlab 放置配置文件 var opt gitlab 各个组件 var log gitlab 放置日志文件 功能操作 检查gitlab各组件状态 gitlab
  • 浅议代码安全检测

    2017年6月1日 中华人民共和国网络安全法 正式实施 等级保护工作正式入法 等级保护制度已成为新时期国家网络安全的基本国策和基本制度 2019年12月1日 网络安全等级保护条例 正式实施 等保2 0是从 信息安全等级保护制度 到 网络安全
  • 卸载vs2010亲测的一个方法

    最近想把vs2010卸载掉 把方法记录下 供需要的人参考 采用的方法是vs自带的卸载的方法 步骤如下 1 打开 控制面板 点击 卸载程序 在弹出的窗口里面找到vs2010的主程序 如图 2 双击打开后 或是右键弹出 卸载 更改 菜单 进入维
  • windows10环境下用anaconda和VScode配置

    文件下载 最新的Anaconda3 5 1 0 Windows x 64 exe版本中在安装的时候已经打包好了vscode 就是在anaconda3安装完成之后 会提示你是否要安装vscode 然后勾选就可以完成vscode的安装 Anac
  • vue实现消息提示框

    我们常常看到很多vue生态下的ui框架的消息提示框 在页面切换的时候依然停留在页面 我们知道vue这种单页面渐进式框架 所有的操作和元素都是挂载在一个节点上的 当路由变化是整个节点下的dom元素也在重新渲染 若要实现ui框架中的类似的消息提
  • 常用损失函数小结

    一 摘要 本文主要总结一下常见的损失函数 包括 MSE均方误差损失函数 SVM合页损失函数 Cross Entropy交叉熵损失函数 目标检测中常用的Smooth L1损失函数 其中还会涉及到梯度消失 梯度爆炸等问题 ESM均方误差 Sig
  • 【2017-07-04】Qt信号与槽深入理解之一:信号与槽的连接方式

    今天是个好日子 嗯 信号槽机制是Qt的特色功能之一 类似于windows中的消息机制 在不同的类对象间传递消息时我们经常使用信号槽机制 然而很多时候都没有去关注connect 函数到底有几种重载的形式 其中的各项参数都是什么 如果总是浮于表
  • Python opencv局部直方图均衡增强

    opencv直方图均衡包含两种 一种是对全图进行直方图均衡 另一种是对局部进行直方图均衡 也称为自适应直方图均衡 直方图均衡是让图像的像素分布更加均匀 一般可以使图片更亮 解决偏色问题 增加局部细节等 1 全局直方图均衡 全局直方图均衡的函
  • SpringBoot 中 Json 格式化配置

    SpringBoot 针对 jackson 是自动化配置的 如果需要修改 也可以自定义配置 0x01 通过 application yml 配置属性说明 spring jackson date format 指定日期格式 比如 yyyy M
  • 窗口函数之ntile()函数讲解

    ntile NTILE n 用于将分组数据按照顺序切分成n片 返回当前切片值 将一个有序的数据集划分为多个桶 bucket 并为每行分配一个适当的桶数 切片值 第几个切片 第几个分区等概念 它可用于将数据划分为相等的小切片 为每一行分配该小
  • WIN10 64位 OSG3.4+Qt5.3+VS2013 编译及使用dae插件、dxf插件

    OSG经过一段时间的发展 相比以前的开发来说 在编译安装上的步骤已经简单许多 但依旧存在许多的坑 本文简单阐述了在64位win10系统上 使用VS2013编译工具结合Qt5 3库 编译安装了带dae 3ds等3D显示插件的3 4版本的Ope
  • 标准IO及其各函数用法

    目录 综述标准IO与文件IO 1 fopen 函数 打开一个文件 2 fclose函数 关闭流 3 读写函数 3 1按字符读写 3 1 1 fgetc函数 从指定流中读取一个字符 3 1 2 fputc函数 向流中输出一个字符 3 1 3案
  • 你要的一眼就能看懂的【this全解】

    this指向谁 招数千万 万里归一 宝典只有一句 取决于 当前this所在函数的调用 分析 就两点 所在函数 调用 怎么看 不用管this外面包了几层函数 或几层对象 就看当前this所在的函数 看这个函数是怎么被调用的 注意调用 没有调用
  • 透过简单例子说明“工厂方法模式”与“模板方法模式”

    最近看了一下阎宏博士的 java与模式 看的不多 的确很经典 通俗易懂 工作中很多的问题一下子就明朗了 本人菜鸟 今天看到 工厂方法模式 Factory Method 的一道思考题 其中又简单涉及了 模板方法模式 Template Meth
  • 基于 Python 的音乐流派分类

    音乐就像一面镜子 它可以告诉人们很多关于你是谁 你关心什么 不管你喜欢与否 我们喜欢说 you are what you stream Spotify Spotify 拥有 260 亿美元的净资产 是如今很受欢迎的音乐流媒体平台 它目前在其
  • ppp-2.4.5移植(交叉编译)

    移植无非就三个步骤 1 configure 2 make 3 make install 正常情况下在步骤1可以指定编译器 CC xxxx之类 或者直接指定host名称 一般 host xxxxx指定后 对应的编译器就不用指定了 会默认xxx
  • Hadoop集群搭建

    搭建教程和资源已上传 1 1Linux搭建 在VMware上部署6台Linux虚拟机用于搭建集群和虚拟机的配置 包括虚拟机网卡和主机虚拟网卡和网关的配置 以及Linux的一些基础配置 有防火墙 主机名 ssh免密登陆和主机名和地址的映射等配
  • Django TypeError: __init__() missing 1 required positional argument: 'on_delete'

    解决方法 在括号里加入 on delete models CASCADE
  • selenium——一个用于web应用程序测试的工具

    selenium是什么 他的前世今生是什么 他的作用是什么 他的原理是什么 啊哈哈 想知道 那还不赶紧去百度百科 https baike baidu com item selenium 18266 鉴于自觉地人少之又少 所以鄙人查询百般资料