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. 获得CCNA和CCNP及CCIE认证的必备条件和有效期绍

    CCNA认证培训介绍 CCNA认证(CCNA-思科网络安装和支持认证助理)是整个Cisco认证体系中最初级的认证,同时它也是获得CCNP认证.CCDP认证和CCSP认证的必要条件(CCIP认证.CCI ...

  2. html入门详细笔记

    Web的基本概念 什么是Web? 中文翻译"网页",它是一些列技术的总称,(包括网站的前台布局.后台程序.美工.数据库开发等),我们称它为网页. Web标准 结构标准(HTML) ...

  3. postman(断言)

    一.断言 1.Code is 200 断言状态码是200 2.contains string 断言respoonse body中包含string 3.json value check (检查JSON值 ...

  4. 学习HTML

    前端三剑客:HTML.CSS.JavaScript.现在就开始学习HTML啦. 学习资源:http://www.freecodecamp.cn/ 学习笔记: h1,head1,一级标题 <h1& ...

  5. springboot使用druid连接池连接Oracle数据库的基本配置

    #阿里连接池配置 #spring.datasource.druid.driver-class-name=oracle.jdbc.driver.OracleDriver #可配可不配,阿里的数据库连接池 ...

  6. spring学习笔记(九)事务学习(上)

    前述 ​ 这段时间在工作中碰到一个事务相关的问题.先说下这个问题的场景,我们是一个商城项目,正在开发优惠券模块,现在有一个需求是需要批量领取优惠券,而且在领券时,其中一张领取失败不能影响其他符合要求的 ...

  7. HTTP接口测试

    HTTP接口测试 1.1 get接口 请求URL http://api.nnzhp.cn/api/user/stu_info 请求方式 get 请求参数 参数名 必选 类型 说明 stu_name 是 ...

  8. Python爬虫丨大众点评数据爬虫教程(2)

    大众点评数据爬虫获取教程 --- [SVG映射版本] 前言: 大众点评是一款非常受大众喜爱的一个第三方的美食相关的点评网站.从网站内可以推荐吃喝玩乐优惠信息,提供美食餐厅.酒店旅游.电影票.家居装修. ...

  9. python循环中对一个列表的赋值问题

    参考:https://www.cnblogs.com/zf-blog/p/10613981.html https://www.cnblogs.com/andywenzhi/p/7453374.html ...

  10. HDU 2013 (水)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2013 题目大意:已知最后一天桃子只有一个,告诉你猴崽子第一天吃掉总桃子数的一半多一个,第二天吃掉剩下总 ...