web自动化的一些基础知识
selenium 原理
就是通过webdriver 给浏览器的驱动发送命令,打开浏览器,建立http通信请求 然后通过发送各种命令让浏览器
进而执行各种操作
xpath 语法
#xpath定位总结:
'''
nodename 选取此节点的所有子节点。
/ 从根节点选取。绝对定位
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 相对定位
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。
* 通配符。匹配所有元素节点
@* 通配符。匹配元素的所有属性
'''
'''
轴运算:
ancestor:祖先结点 包括父
parent:父结点
preceding: 当前元素节点标签之前的所有结点。(html页面先后顺序)
例://div//table//td//preceding::td
preceding-sibling: 当前元素节点标签之前的所有兄弟结点
following: 当前元素节点标签之后的所有结点。(html页面先后顺序)
following-sibling:当前元素节点标签之后的所有兄弟结点
'''
'''
函数使用:
text():元素的text内容 例://*[@id="XXX"]//p[text()="XXXX"]
contains(属性/text(),value):包含函数。例:contains(@class,"XXXX")、contains(text(),"XXXX")
'''
'''
逻辑运算:
and 表示条件与。
or 表示条件或。
例://div[@class="XXX" and contains(@style,"display:visibility")]
'''
4. driver.close() 关闭浏览器当前的窗口
5. driver.quite() 退出浏览器
6. driver.back()返回前一页面
7. driver.forward() 前进
8.driver.refresh() 刷新
9. driver.title() 获取窗口标题
10。 driver.current_url 获取url
driver.current_window_handle 获取当前窗口的句柄 身份证id
对文本元素的四种基本操作
1. driver.fin.......get_attribute("value") 获取元素的属性值
2. driver.fin.......text 获取元素的文本
3. .click() 点击操作
4. sendkeys() 输入操作
常用页面操作3
等待方式
1. time.sleep()
2.智能等待
隐式等待 implicitly_wait(秒) 设置等待时长,在这个时间内加载完成,则执行下一步
添加一次就行,全局通用
3.显性等待
WebDriverWait类
WebDriverWait(driver,等待时长,轮循周期默认值0.5秒).until(判断条件)/until_not() 直到这个条件不成立
4. expected_conditions模块:提供了一系列期望发生的条件
presence_of_element_located(里面是个元祖(by.跟定位方式,"表达式")):元素存在
visibility_of_element_located:元素可见
element_to_be_clickable:元素可点击
使用之前需要导入的库
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
窗口切换
1.获取当前所有的窗口
windows =driver.window_handles 得到是一个list 取值 -1得到当前的窗口,因为当前的窗口一定是你最后打开的那个窗口
取值 0 切换到第一个窗口
2.driver.current_window_handle 获取当前窗口的句柄
3. Ec.new_window_is_opened(+获取到的窗口句柄)
这个函数可以判断有没有新窗口出现
driver.switch_to.window(windows[-1]) 进行窗口的切换
如果新窗口出现就进行切换
这种方式更保险些
iframe切换
1.首先要判断下是否在iframe里面,如果在才需要进行切换
driver.switch_to.frame()参数可以是 name index webelement
2.退出iframe 回到默认的html页面
driver.switch_to.default_content() 直接回到顶层
如果iframe 有多层嵌套只能一个个切换
driver.switch_to.parent_frame() 切换到上一级iframe
方式二 进行iframe 的切换
EC.frame_to_be_available_and_switch_to_it()
里面的参数可以是 name id 的属性名,还可以是一个元祖 (By.xxx,"定位方式的属性") ,还可以是一个webelenment
跟等待配合使用 并进行ifram 的切换
alert弹窗
switch_to.alert 切换到alert弹框 跟confirm 弹窗
alert() 这个方法有返回值
.text 获取他的文本
.accept() 接受这个弹窗 弹窗就会消失,关闭
.dismiss() 拒绝这个弹框
.sendkeys() 如果有输入的地方还可以输入
EC.alert_is_present() 里面不需要参数 alert弹窗可见
然后切换到弹窗
进行处理
对下拉列表进行处理
select option
selenium 提供了 select类来处理select option
引入类
from selenium.webdriver.support.ui import Select
Select 类有初始化函数,需要传入一个select标签的对象,然后才能调用里面的方法
1、通过下标选择 select_by_index(index) 索引从0开始
2、通过value属性select_by_value(value值)
3、通过文本内容select_by_visible_text(文本内容)
执行js 使用js 定位页面元素
js = '里面写js代码'
driver.execute.script(js)
滚动条操作
1. 先找到元素
element = driver.findxxxxxxx.
2.再讲元素拖动到可见区域
driver.execute_script('arguments[0].scorlllntoView();',element) 这个函数的参数有两个,一个是js脚本,还可以传一个web对象
arguments[0] 这样写就可以取到这个 element这个参数 然后执行scorlllntoView() 操作,把这个元素拖到可见区域
3. 在操作元素
element.xxxx()
百度搜索
参考:
@classmethod
用例前置:setUpClass(cls)
就是整个类只执行一次,针对的是一个类 使用@classmethod 装饰器
@classmethod
用力后置:tearDownClass(cls)
setUp()、tearDown()、针对的是每个测试用例,一个测试用例会执行一次
浏览器快捷键:
ctrl +f 查找元素
ctrl+shift+c 悬浮框里卖弄的元素显示。
web自动化的一些基础知识的更多相关文章
- Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!
本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...
- 想入门Web安全,这些基础知识都学会了吗?
毕业季已经正式告一段落,这届毕业生都找到心仪的工作了吗? 正在实习期或者试用期的职场新人,是否在岗位上做的风生水起? 工作了一两年,从未升职加薪的菜鸟,还愿意继续原地踏步吗? 在校学生.IT从业者.毕 ...
- web前端篇:html基础知识
目录 1.web前端: 2.HTML概述 2.1HTML介绍 2.2HTML在计算机中如何表现 3.HTML基础语法 4.练习题: 1.web前端: 什么是web? web 就是网页,是一种基于B/S ...
- web开发必备-网络基础知识---记录一下
1.osi 7层网络模型 2.socket 套接字编程 PS:一个从事web开发的人来说,我们是使用http协议来和服务器来进行交互.后面会详细的分析这个过程.
- 初学者入门web前端:C#基础知识:函数
入行前端对函数的掌握程度有可能直接影响以后工作的效率,使用函数可以高效的编写编码,节省时间,所以我整理了C#中最基础的函数知识点,虽然我在学习中 遇到很多问题,但是只要能够解决这些问题,都是好的. 一 ...
- web前端之html基础知识初级
html 基础标签 单标签 1.注释标签: ctrl+/ 换行标签: 横线标签: 标题标签: 段落标签: 表示强调标签: 文字 属性:文字加颜色 color:改变文字颜色 size:改文字大小属性 例 ...
- 安全测试-WEB安全渗透测试基础知识(四)
.4. HTTP标准 1.4.1. 报文格式 1.4.1.1. 请求报文格式 <method><request-URL><version> <headers& ...
- Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」
1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...
- selenium自动化基础知识
什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...
随机推荐
- CC视频CTO栗伟:CDN系统架构及CC视频应用实践
2017 年 11 月9日,CC视频获2.08 亿元C轮融资. EGO 北京分会会员.CC视频CTO栗伟获邀作为 EGO 线上分享第三季嘉宾,与大家交流了CDN系统架构及CC 视频的应用实践. \\ ...
- 自动安装带nginx_upstream_check_module模块的Nginx脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #!/bin/bash useradd -s /sbin/no ...
- Windows 怎么启动 apache
在可执行目录下找到httpd.exe命令,然后运行cmd,执行类似以下命令:C:\"Program Files"\"Apache Software Foundation& ...
- POJ 2230 Watchcow 欧拉回路的DFS解法(模板题)
Watchcow Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 9974 Accepted: 4307 Special Judg ...
- Java——Java中编码问题
在开发过程中经常会遇到一会乱码问题,不是什么大问题,但是也挺烦人的,今天来将我们开发总结的经验记录下来,希望可以给大家一些帮助. 一些概念: 字符:人们使用的记号,抽象意义上的一个符号.比如:‘1’, ...
- uniapp滚动监听元素
鸽了这么久,一晃2个月过去了.自考+上班没时间记录. 前不久看到移动官网上的时间轴效果,看起来不错,我也来试着做一下. 需要元素滚动到视野内加载动画. 插件地址 https://ext.dcloud. ...
- 简单服务发现协议(SSDP)编程指导
本文主要讲解如何使用ssdp进行编程,不涉及过多关于ssdp的理论知识 1. 前言 网上对ssdp理论介绍的一大把,缺乏从编程角度的一个指导,这里不会长篇大论ssdp理论,只是根据实际编码经验对用 ...
- HDU-6351 Beautiful Now 全排列暴力
Beautiful Now 题意 给出一个最大为10^9的数字n,以及一个k,你最多交换n中任意两个位置的数字k次,问形成的最大数字和最小数字. 思路 看到这题,我靠这题暴力交换一下,不难啊,咋没人做 ...
- 【Docker】在本地打包maven程序为docker镜像报错: Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1]
错误信息: [ERROR] Failed to execute goal com.spotify:docker-maven-plugin:1.0.0:build (default-cli) on pr ...
- Java 在Excel中创建透视表
本文内容介绍通过Java程序在Excel表格中根据数据来创建透视表. 环境准备 需要使用Excel类库工具—Free Spire.XLS for Java,这里使用的是免费版,可通过官网下载Jar包并 ...