python selenium自动化面试_18年selenium3+python3+unittest自动化测试教程(上)

第一章 自动化测试课程介绍和课程大纲

1、自动化测试课程介绍

简介:讲解什么是自动化测试和课程大纲讲解,课程需要的基础和学后的水平

python3.7+selenium3

pycharm

第二章自动化测试相关软件安装

1、自动测试工具selenium介绍

简介:介绍selenium自动化测试工具

为什么用selenium工具 1 -> 2 -> 3

1、主流,各大公司都有用,开源免费社区活跃

2、支持主流浏览器 火狐FireFox、谷歌chrome、IE(不建议)

3、支持多个语言,如python、java,js、php等

4、跨平台:mac、windows、linux等  64位系统

2、自动化测试环境搭建之python3安装

简介:使用windwos安装python3

1、python3安装

1)官方文档安装 下载解压包

https://www.python.org/downloads/windows/

2)python环境变量安装

3)pip工具介绍

包管理工具

3、自动化测试环境搭建之selenium3安装

简介:使用安装包安装selenium3

方法1:cmd环境下,用pip install selenium

方法2:下载selenium安装包手动安装 (推荐)

下载地址:https://pypi.org/project/selenium/

在解压好的目录下进行安装  python setup.py install

4、自动化测试工具selenium验证安装

简介:讲解自动化测试工具selenium安装准确性

下载火狐浏览器

1、使用selenium打开firefox浏览器

需要下载对应的驱动

火狐:https://github.com/mozilla/geckodriver/releases

下载driver、拷贝到浏览器安装路径、配置环境变量

配置环境变量,需要重启cmd窗口

from selenium import webdriver

driver = webdriver.Firefox()

5、前端知识讲解和工具安装使用

简介:讲解前端基础知识和推荐安装的工具

sublime  / cmder  /   chrome浏览器  /  firefox浏览器

必须要了解的前端基础知识:

html: 网页基础,用于显示数据

js: 网页脚本,控制页面的数据

css: 用于控制文件样式

xml: 用来传输和存储数据

json: 用来传输和存储数据

http: 网络请求协议

xpath:

第三章 测试核心理论知识-(工作面试必备)

1、必备知识之软件开发生命周期

简介:讲解软件开发的生命周期

1、测试人员需要全程参与

需求调研-》需求分析评审-》软件架构设计-》编码-》单元测试-》集成测试-》系统测试-》预发布系统测试-》上线

测试人员要求开发人员写单元测试

把控时间点、风险点

接口文档不完善(更新了需求功能,不及时更新接口文档)

2、测试相关知识分类讲解

简介: 测试分类讲解

黑盒测试(功能测试):功能符合用户的需求:

白盒测试:知道里面的逻辑,验证符合用户的需求

冒烟测试:主功能、主路径测试

自动化测试: 人工测试转为工具自动执行(没有谁取代谁,有些场景适合自动化测试,有些场景适合手工测试)

性能测试:模拟多种峰值和负载去测试各项性能指标 jmeter、loadrunner

3、自动化测试和手工测试优缺点

简介:介绍什么时候需要用到自动化测试和什么时候用手工测试

1、自动化测试方便,自动验证功能是否有问题

2、更好的利用自有,节约人力成本

3、覆盖更全,增加软件的稳定性

场景:

软件需求变更少,项目周期长,稳定性要强,环境要隔离独立(开发一套环境、测试一套环境)

如果整个系统需求变更多,只能抽取部分功能做自动化测试

语言选择:

python  java   ruby  php

打造自己的唯一性

第四章 自动测试selenium精讲实战

1、selenium基础实战之定位网页元素技巧上集

简介:讲解使用selenium定位网页元素,

find_element_by_id,find_element_by_name,find_element_by_class_name

1、开启浏览器

browser = webdriver.Firefox();

2、打开网页

browser.get("http://baidu.com")

使用python判断是否正确

browser.title 或者 browser.current_url

3、定位元素的8种方法,(!!!!一定要唯一)

id: find_element_by_id() 采用id属性进行定位

name: find_element_by_name() 定位方式和id定位相似,id、name和class一般在网页都至少会有其中的一种

class name: find_element_by_class_name() 定位方式和id定位相似,id、name和class一般在网页都至少会有其中的一种

4、定位到元素后的方法

clear() //清空

send_keys() // 输入

back()  //后退页面

maximize_window() // 最大化窗口

click()   //点击事件,点击按钮,超链接

submit() //提交表单

5、定位到元素后的属性

tag_name  //标签名

text  //文本内容

2、selenium基础实战之定位网页元素技巧下集

简介:讲解使用selenium定位网页元素,

1、tag name:find_element_by_tag_name() 通过标签名去定位,用的少,如find_element_by_tag_name("div")

2、link text: find_element_by_link_text() 超链接内容定位,元素内容

如  xxx ,则find_element_by_link_text("xxx")

from time import sleep

sleep(5)

3、partial link text:find_element_by_partial_link_text() 超链接内容定位,模糊匹配,和上面类似

比较难下面的两种,下节课讲解

xpath:

css selector

3、selenium实战定位网页元素之CSS定位

简介:讲解使用css定位网页元素

1、css selector:find_element_by_css_selector()

根据CSS属性定位,一般class是用.标记,id是用#标记,定位方式也会比xpath快

如 find_element_by_css_selector('input[id=\'search\']')   // 规则:  元素[属性=值]

技巧:通过firebug的拷贝css路径

路径:审查元素-》右键-》复制-》css选择器

4、selenium实战定位网页元素之xpath定位

简介:讲解使用xpath定位网页元素

1、xpath语法:http://www.w3school.com.cn/xpath/xpath_syntax.asp

注意 :  ”//“ 是全部的意思,即全文扫描,  ”/“ 的相邻的意思, *是所有元素, ”..“是元素的父节点, "."是当前节点

2、xpath :find_element_by_xpath()xpath是XML路径语言,通过元素的路径来完成对元素的查找,HTML就是XML的一种实现方式,在FriePath插件里copy对应的xpath地址

绝对路径定位:从标签开始依次往下进行查找

相对路径:利用元素属性来进行xpath定位

技巧:通过firebug的拷贝css路径

8种选择器注意问题:如果定位元素报错,原因如下

1、根据定位取不到

2、多个元素根据下标超出范围,没有0,从1开始

解决办法:换其他方式定位元素

第五章 selenium实战之模拟事件处理

1、自动化测试实战之ActionChains模拟用户行为

简介:讲解使用selenium里面的ActionChains模拟用户的行为

需求:

需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽

解决:selenium提供了一个类来处理这类事件

selenium.webdriver.common.action_chains.ActionChains(driver)

脚本:

from selenium.webdriver.common.action_chains import ActionChains

执行原理:

调用ActionChains的方法时不会立即执行,会将所有的操作按顺序存放在一个队列里,当调用perform()方法时,队列中的事件会依次执行

支持链式写法或者分步写法

ActionChains(driver).click(ele).perform()

鼠标和键盘方法列表:

perform() 执行链中的所有动作

click(on_element=None) 单击鼠标左键

context_click(on_element=None) 点击鼠标右键

double_click(on_element=None) 双击鼠标左键

move_to_element(to_element) 鼠标移动到某个元素

ele.send_keys(keys_to_send) 发送某个词到当前焦点的元素

========== 不常用 ==========

click_and_hold(on_element=None) 点击鼠标左键,不松开

release(on_element=None) 在某个元素位置松开鼠标左键

key_down(value, element=None) 按下某个键盘上的键

key_up(value, element=None) 松开某个键

drag_and_drop(source, target) 拖拽到某个元素然后松开

drag_and_drop_by_offset(source, xoffset, yoffset) 拖拽到某个坐标然后松开

move_by_offset(xoffset, yoffset) 鼠标从当前位置移动到某个坐标

move_to_element_with_offset(to_element, xoffset, yoffset) 移动到距某个元素(左上角坐标)多少距离的位置

send_keys_to_element(element, keys_to_send) 发送某个键到指定元素

2、鼠标事件实战之hover菜单栏弹出

简介:鼠标事件之菜单栏hover弹出

1、

#引入 ActionChains 类

from selenium.webdriver.common.action_chains import ActionChains

2、move_to_element(to_element) 鼠标移动到某个元素

#对定位到的元素执行鼠标移动到上面的操作

ActionChains(driver).move_to_element(ele1).perform()

3、多知识点综合实战之模拟用户登录

简介:讲解使用selenium模拟登录小D课堂,并选择课程

1、多知识点实战

2、查找登录框-》输入用户名和密码-》触发登录-》判断登录是否成功-》打印结果

4、自动化测试实战之网页等待时间

简介:讲解自动化测试的等待时间

1、为什么需要等待时间--》等系统稳定

网页需要加载对应的资源文件,页面渲染,窗口处理等等

2、自动化测试常用的等待时间

强制等待 : (自己调试代码看效果)

from time import sleep

sleep(5)  # 强制等待5秒再执行下一步,缺点是不管资源是不是完成,都必须等待

隐性等待:

driver.implicitly_wait(10)  # 隐性等待,最长等10秒

#设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步,弊端就是程序会一直等待整个页面加载完成,到浏览器标签栏那个加载圈不再转

注意:对driver起作用,所以只要设置一次即可,没有必要到处设置

显性等待:

WebDriverWait 需要配合 until和until_not,程序每隔N秒检查一次,如果成功,则执行下一步,否则继续等待,直到超过设置的最长时间

from selenium.webdriver.support.wait import WebDriverWait

语法:WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

结论: 隐性等待和显性等待可以同时用,等待的最长时间取两者之中的较大者

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

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

相关文章

wps的计算机在哪里设置密码,wps文件怎么设置和取消密码 wps文件密码设置和取消的步骤方法...

在wps制作文件时,有时候我们需要中途离开,但是担心其他用户不小心操作导致文件丢失,那么我们可以设置wps文件密码,这样就可以避免了,那么怎么将wps文件设置密码呢?其实设置方法非常简单,下面教程之家网为大…

this关键字实现串联构造函数调用

在一个类中如果需要实现多个自定义构造函数,通常做法是在构造函数中实现各自的业务逻辑,如果这些业务逻辑的实现并非截然不同的话,显然不符合oop编程思想,极不利于维护,当然,我们也可以通过将相同的逻辑部分封装成一个方法,但还有一种更为合理简单的方法,下面就通过…

python3.6.8卸载_CentOS7下安装python3.6.8的教程详解

由于最近有个任务需要在python环境下跑,项目是python3.6 tensorflow1.3.1.现总结安装环境:卸载Python3.6方法:首先用命令: whereis python 查看所要删除的python3.6文件位置然后用命令: rm -rf 删除安装Python3.6.8方法:一:单独使用Python, …

魔兽世界联盟物价稳定的服务器,一个残酷的真相!在《魔兽世界》怀旧服,女生一般都爱选联盟...

原标题:一个残酷的真相!在《魔兽世界》怀旧服,女生一般都爱选联盟随着《魔兽世界》经典旧世的人气渐涨,暴雪又追加了3组PVP服,让不少没能抢注到心仪昵称的玩家欣喜若狂。这样一来,原本就饱受争议的服务器选…

网格的补洞操作

简介 网格补洞操作&#xff0c;里面有有奖征集答案&#xff0c;欢迎大家踊跃回答。第一个留言为有效留言那个horse.off请到github下载 算法描述 找到网格的所有的边界半边。 for循环选定一个孔洞的关键点 以来点来遍历整个孔洞 补洞 代码 // 网格 补洞的操作#include <iostr…

SQL Server 2005 Hierarchies WITH Common Table Expressions

代码 1 createtableEmployee2 (3 Id INTIDENTITY(1,1) PRIMARYKEY, 4 [Name]varchar(30) null, 5 JobTitle varchar(30) null, 6 Manager intnull7 )8 9 insertEmployee10 selectincf, IT Director,nullunionall11 selectinc3, Finance Director,nullunionall12 select…

aspx repeater 用法_ASP.NET-----Repeater数据控件的用法总结

一、Repeater控件的用法流程及实例&#xff1a;1、首先建立一个网站&#xff0c;新建一个网页index.aspx。2、添加或者建立APP_Data数据文件&#xff0c;然后将用到的数据库文件放到APP_Data文件夹中。3、打开数据库企业管理器&#xff0c;数据库服务器为local(.)&#xff0c;然…

服务器通过响应头向浏览器设置cookie,http响应包括设置cookie jession id,但随后发送请求,请求标头中没有cookie信息...

第一请求响应&#xff1a;cache: no-cacheConnection: keep-aliveContent-Type: image/pngDate: Tue, 10 May 2016 10:47:43 GMTServer: Tengine/2.1.1Set-Cookie: _uidCiMDa1cxvEjjDeFAw56Ag; path/Set-Cookie: _uideff37cac39ac062caba9b5ec2c8a00f4;Path/Set-Cookie: JSESSI…

Csharp 两个DataTable或DataView互换,可以用来加密解密

/// <summary>/// 涂聚文 geovindu.blog.163.com/// www.dusystem.com www.dupcit.com/// 2011-05-28/// </summary>/// <param name"table"></param>/// <returns></returns>static DataTable GetDecTable(DataTable table){i…

网络切片技术缺点_一文读懂网络切片 - 技术综合版块 - 通信人家园 - Powered by C114...

在各种新兴业务不断涌现的今天&#xff0c;现有的4G LTE网络已经无法满足日益增多的业务需求&#xff0c;因此未来的网络需要通过网络切片技术从“one size fits all”向“one size per service”过渡。在《网络切片“火锅论”&#xff1a;同一口锅&#xff0c;不同的梦想》一文…

安卓导航无信号无服务器,无信号导航能用否

● 出发前测试为解析导航不准的原因&#xff0c;我们先来了解一下GPS导航原理。导航仪是通过接受GPS信号来确定位置所在&#xff0c;再通过存储于内存中的地图数据规划路线。在车辆行驶时&#xff0c;导航仪通过不断接受GPS信号来检测车辆所在地状态&#xff0c;从而提示指引信…

python并发编程之semaphore(信号量)_浅谈Python并发编程之进程(守护进程、锁、信号量)...

前言&#xff1a;本博文是对Python并发编程之进程的知识延伸&#xff0c;主要讲解&#xff1a;守护进程、锁、信号量。友情链接&#xff1a;一、守护进程(daemon)1.1 守护进程概念首先我们都知道&#xff1a;正常情况下&#xff0c;主进程默认等待子进程调用结束之后再结束&…

csharp: Flash Player play *.flv file in winform

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Xml; using AxShockwaveFlashObjects;/** VS2005在添加Shockwave时…

ad文件服务器部署,AD 集成 – 配置 ADFS 登陆 - Seafile 服务器用户手册

要求要想使用 ADFS 登陆到 Seafile&#xff0c;需要以下组件&#xff1a;1、安装了 ADFS 的windows服务器。安装 ADFS 和相关配置详情请参考 本文。2、对于 ADFS 服务器的SSL有效证书&#xff0c;在这里我们使用 adfs-server.adfs.com 作为域名示例。3、对于 seafile 服务器的S…

win7映射网络驱动器消失了_win7怎么映射网络驱动器|win7设置网络驱动器的方法...

2015-08-21 15:57:15近来&#xff0c;有一些刚刚升级windows10系统的用户向小编咨询在新系统中该如何创建映射网络驱动器。其实&#xff0c;方法非常简单&#xff0c;接下来&#xff0c;小编就向大家分享win10系统创建映射网络驱动器的具体方法...2015-05-15 19:27:26Win7系统怎…

NTC热敏电阻基础以及应用和选择(转)

源&#xff1a;NTC热敏电阻基础以及应用和选择 NTC被称为负温度系数热敏电阻&#xff0c;是由Mn-Co-Ni的氧化物充分混合后烧结而成的陶瓷材料制备而来&#xff0c;它在实现小型化的同时&#xff0c;还具有电阻值-温度特性波动小、对各种温度变化响应快的特点&#xff0c;可被用…

graphic头文件函数_graphics.h头文件

graphics.h头文件是一款tc操作必备组件。graphics.h头文件主要是运行在win8、win7操作系统上&#xff0c;为用户提供了非常多函数类型&#xff0c;用户只需使用tc编译就可以使用这个软件&#xff0c;是用户进行tc编辑时不可缺少的操作工具。graphics.h头文件函数范围&#xff1…

homeomorphic 同胚 释义

简介 在拓扑学中&#xff0c;两个流形&#xff0c;如果可以通过弯曲、延展、剪切(只要最终完全沿着当初剪开的缝隙再重新粘贴起来)等操作把其中一个变为另一个&#xff0c;则认为两者是同胚的。如&#xff1a;圆和正方形是同胚的&#xff0c;而球面和环面就不是同胚的。 参考链…

流形 非流形 释义

非流形边 A non-manifold edge has more than two incident triangles. 就是一个边由超过两个三角形相交。就是非流形边。 非流形顶点 比如两个三棱锥相接触的那个顶点就是非流形顶点。 以此可以逆推出流形是什么意思。 参考 书籍 [Polygon mesh processing] 转载于:https://ww…

mysql 插入数据 自增长_如何在MYSQL插数据 ID自增

2种解决办法1.修改你的数据库表&#xff0c;将ID设为自增长&#xff0c;注&#xff1a;只有主键才可以设置为自增长例&#xff1a;CREATE TABLE message (id INT(8) NOT NULL AUTO_INCREMENT, PRIMARY KEY(id));2.代码中进行处理Statement ps;ResultSet rs;int id 0;........…