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自动化的一些基础知识的更多相关文章

  1. Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!

    本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...

  2. 想入门Web安全,这些基础知识都学会了吗?

    毕业季已经正式告一段落,这届毕业生都找到心仪的工作了吗? 正在实习期或者试用期的职场新人,是否在岗位上做的风生水起? 工作了一两年,从未升职加薪的菜鸟,还愿意继续原地踏步吗? 在校学生.IT从业者.毕 ...

  3. web前端篇:html基础知识

    目录 1.web前端: 2.HTML概述 2.1HTML介绍 2.2HTML在计算机中如何表现 3.HTML基础语法 4.练习题: 1.web前端: 什么是web? web 就是网页,是一种基于B/S ...

  4. web开发必备-网络基础知识---记录一下

    1.osi 7层网络模型 2.socket 套接字编程 PS:一个从事web开发的人来说,我们是使用http协议来和服务器来进行交互.后面会详细的分析这个过程.

  5. 初学者入门web前端:C#基础知识:函数

    入行前端对函数的掌握程度有可能直接影响以后工作的效率,使用函数可以高效的编写编码,节省时间,所以我整理了C#中最基础的函数知识点,虽然我在学习中 遇到很多问题,但是只要能够解决这些问题,都是好的. 一 ...

  6. web前端之html基础知识初级

    html 基础标签 单标签 1.注释标签: ctrl+/ 换行标签: 横线标签: 标题标签: 段落标签: 表示强调标签: 文字 属性:文字加颜色 color:改变文字颜色 size:改文字大小属性 例 ...

  7. 安全测试-WEB安全渗透测试基础知识(四)

    .4. HTTP标准 1.4.1. 报文格式 1.4.1.1. 请求报文格式 <method><request-URL><version> <headers& ...

  8. Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」

    1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...

  9. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

随机推荐

  1. Codeforces Round #590

    题目链接:Round #590 题目答案:官方Editorial.My Solution A. Equalize Prices Again 签到题还WA了一发,向上取整有点问题: //my wrong ...

  2. 数学--数论--整除分块(巨TM详细,学不会,你来打我)

    1.概念 从一道例题说起 在介绍整除分块之前,我们先来看一道算数题:已知正整数n,求∑i=1n⌊ni⌋已知正整数n,求∑i=1n⌊ni⌋在介绍整除分块之前,我们先来看一道算数题: 已知正整数n,求∑i ...

  3. Spring Boot入门系列(十三)如何实现事务

    前面介绍了Spring Boot 中的整合Mybatis并实现增删改查.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1 ...

  4. E - No Pain No Game 线段树 离线处理 区间排序

    E - No Pain No Game  HDU - 4630 这个题目很好,以后可以再写写.这个题目就是线段树的离线写法,推荐一个博客:https://blog.csdn.net/u01003321 ...

  5. 随笔 - B树算法实现

    写代码之前,再回顾一下B树是什么,满足什么样的规则 B树规则: 排序方式:所有节点关键字是按递增次序排列,并遵循左小右大原则 子节点数:非叶节点的子节点数>1,且<=M ,且M>=2 ...

  6. 【Kafka】数据分区策略

    数据分区策略 四种策略 一.指定分区号,数据会直接发送到所指定的分区 二.没有指定分区号,指定了数据的key,可以通过key获取hashCode决定数据发送到哪个分区 三.都没有指定的话,会采取rou ...

  7. OpenCV 经纬法将鱼眼图像展开

    文章目录 前言 理论部分 鱼眼展开流程 鱼眼标准坐标计算 标准坐标系与球坐标的转换 代码实现 测试效果如下图 总结 this demo on github 前言 鱼眼镜头相比传统的镜头,视角更广,采集 ...

  8. MySQL 主从复制原理及过程讲解

    mysql主从原理描述,摘自老男孩. 下面简 单描述下 MySQL Replication 复制的原理及过程 . 1.在 Slave 服务器上执行 start slave 命令开启主从复制开关,主从复 ...

  9. xml(4)

    schema约束 dtd语法:<!ELEMENT 元素名称 约束> schema符合xml的语法,xml语句 一个xml中可以有多个schema,多个schema用名称空间区分(类似jav ...

  10. Python基础语法day_04——操作列表

    day_04 遍历整个列表 我们创建列表时,需要输出整个列表,但是通常列表会很长,包含很多元素,当列表长度发生变化是,都必须修改代码.通过for循环,我们可以很轻易地输出整个列表. #遍历整个列表 创 ...