使⽤Python+selenium 实现第⼀个⾃动化测试脚本
使⽤Python+selenium
实现第⼀个⾃动化测试脚本
⼀,安装Python.
安装后点击开始菜单,在菜单最上⾯能到IDLE.
IDLE 是python ⾃带的shell, 点击打开, 即可开始编写python 脚本了.
⼆,安装selenium
上⾯python 已安装完成,接下来安装selenium.
安装selenium 之前需要安装必要⼯具.
安装后,(⽐如zip 包形式安装),进⼊解压的⽬录,在命令⾏执⾏如下命令即可安装.
安装selenium
上⾯2个⼯具安装好后,安装selenium 只需在命令⾏进⼊python 安装路径Script ⽬录下,执⾏
即可⾃动安装.
完成安装后在IDLE 输⼊
如果没报错即代表安装成功.
三,注意事项
1. selenium3.0 需要独⽴安装.解压后放在python 安装路径下即可.
2. geckodriver 驱动要求FireFox 浏览器必须48版本以上,如果不是,更新FireFox.
3. 如果⽤Java 开发,需注意3.0必须⽤JDK1.8版本才⾏.
4. 同样⾕歌的驱动,没FQ 只能使⽤了.
注意阿⾥的镜像对应的⾕歌的版本:
四,第⼀个⾃动化脚本
完成上⾯所有准备⼯作,就可以开始第⼀个⾃动化脚本的编写了.
打开IDLE,通过快捷键CTRL+N 打开⼀个新窗⼝,在新窗⼝输⼊以下代码:
这⾥如果关的过快,就需要将browser.quit()给去掉.不然看不见操作python setup.py install
pip install -U  selenium
from  selenium import  webdriver
# coding = utf-8
from  selenium import  webdriver
browser = webdriver.Firefox()
<("www.baidu")
browser.find_element_by_id("kw").send_keys("selenium")
browser.find_element_by_id("su").click()
browser.quit()
写完脚本后脚本页执⾏F5快捷键运⾏脚本,可以看到脚本启动FireFox浏览器进⼊百度页⾯,输⼊”selenium”点击搜索按钮,第⼀个脚本即完成了.
代码解析:
# coding = utf-8
(为了防⽌乱码问题,以及在程序中添加中⽂注释,把编码统⼀成UTF-8;)
from selenium import webdriver
(导⼊selenium的webdriver包,导⼊webdriver包后才能使⽤webdriver API进⾏⾃动化脚本开发.)
browser = webdriver.Firefox()
(将控制的webdriver的Firefox赋值给browser,获得了浏览器对象才可以启动浏览器;)
<("www.baidu")
selenium怎么使用(获得浏览器对象后,通过get()⽅法,向浏览器发送⽹址;)
browser.find_element_by_id("kw").send_keys("selenium")
(通过id=kw定位到百度的输⼊框,并通过键盘⽅法send_keys()向输⼊框输⼊selenium;)
browser.find_element_by_id("su").click()
(通过id=su定位到搜索按钮,并向按钮发送单击事件(click());)
browser.quit()
(退出并关闭窗⼝的每⼀个相关的驱动程序.)
名词解释:
1.
find_element_by_id()
我们可以直接通过英⽂意思理解这个⽅法,通过ID查元素,也就是使⽤页⾯⾥的id属性:id=”“. 我们先定位百度搜索框,在搜索框⾥输⼊我们要查的内容.
2.
find_element_by_name()
这个定位的⽅法是通过查名字的⽅式,对元素进⾏定位,我们在检查元素的时候看到name=”“,就可以使⽤这个⽅法了.
3.
find_elements_by_class_name()
这个定位的⽅法是通过查class_name的⽅式对元素进⾏定位,在检查元素的时候看到class=”“,就可以使⽤这个⽅法了.
4.
find_element_by_tag_name()
这个定位的⽅法是通过元素的标签属性对元素进⾏定位,在检查元素的时候查看元素的最前⾯的input,但是这个定位⽅式有个不好的地⽅在于很多页⾯都有同样的标签存在,所以我们定位的时候会很⿇烦.
所以,这个⽅法我们不推荐使⽤. 这个⽅法也是仅供参考.
实际上是会报错的,因为selenium在定位的时候不清楚我们要的是哪个元素.
我们如果⼀定要⽤这个⽅法的花,我们就需要清楚,我们定位的标签的精准位置.
5.
find_element_by_link_text()
这个定位⽅式是通过查页⾯的⽂本信息进⾏定位. 也就是我们看到页⾯的信息去定位, 例如:我们需要定位百度⾸页的登录按钮.并点击它.6.
这个⽅法的定位⽅式就是通过模糊⽂本信息查元素,有些时候,我们希望定位到⼀个⽂本⽐较长的元素时,我们就可以通过这个⽅法去定位. 例如: 定位百度⾸页页脚下的”使⽤百度前必读”, 我们是输⼊”使⽤”.
这样我们也是可以定位到该元素的.
7.
最后来说两种最常⽤的定位⽅法,xpath 元素定位:通过查元素的路径去查元素.
这两个⽅法在使⽤上⽬前很⼴泛,也很多⼈推荐使⽤.这两个很⽅便,因为浏览器已经帮我们做好准备了,我们只需要复制粘贴就可以了. 我们继续定位搜索框.
这样我们直接复制xpath 路径就可以了,这样就可以解决我们会输⼊错误元素的问题(注:在使⽤xpath 的时候,最外⾯的双引号改成单引号.8.
css 在操作上跟xpath 差不多,也是通过复制粘贴的⽅式进⾏定位,不同在于css ⽅法通过对页⾯中的css 元素定位的.
假设测试test1.给定登录页⾯的username 和password,并点击登录按钮,进⾏⾃动登录测试
代码如下:
就可以以这条脚本运⾏,⽽.py ⽂件保存到桌⾯也可以直接双击运⾏(⾸先要安装python)
加⼊再测试其它功能可以根据获取id,name 等继⽽进⾏测试操作.上⾯只是基本测试.
之后需要进⾏测试案例的编写,返回测试数据. 以及与ones.ai ⾃动化测试连接.
ones 的对接⽂档
通⽤说明
流⽔线(pipeline
参数名
值类型取值范围默认值取值例⼦说明uuid
string len=8pipeline uuid name
string len<=32pipeline 名称owner
string len=8pipeline 创建者 uuid create_time
int64pipeline 创建时间(秒)project
object pipeline 绑定的 project 信息 uuid
string len=8项⽬ uuid  name
string 项⽬名称configure_statuses
object pipeline 配置状态 scm
object 代码仓库集成配置状态,参考下⽅说明 ci
object 持续集成配置状态,参考下⽅说明 lint
object 代码质量检查配置状态,参考下⽅说明 test object ⾃动化测试配置状态,参考下⽅说明find_element_by_partial_link_text()
from  selenium import  webdriver
driver = webdriver.Chrome()
<("www.baidu")
driver.find_element_by_partial_link_text("使⽤").click()find_element_by_xpath()
find_element_by_css_selector()
 artifact object部署结果关联配置状态,参考下⽅说明
branches array pipeline 下的已知分⽀列表,参考下⽅说明
branch_sprint_bindings array pipeline 下分⽀与迭代的绑定列表,参考下⽅说明sprint_binding_rule string pipeline 与项⽬下迭代的⾃动绑定规则, 参考下⽅说明
API 说明
1. pipeline
创建⼀个 pipeline
POST
调⽤权限
传值⽅式
JSON
参数说明
返回的
状态码说明
200
成功400
请求结构错误403
token ⽆效,⽆权限500
服务器错误801参数错误
返回
参数名值类型取值范围默认值取值例⼦说明
pipeline object 参考顶端 pipeline 模型{
"action": "stage",
"stage": {
"type": "test",//stage 类型:start,finish,lint,test
"name": "test",//stage 名称, eg: "test"
"start_time": start_time, //阶段的开始时间,单位秒
"finish_time": finish_time, //阶段的结束时间,单位秒
"status": status, //stage 状态:unknown,success,failure
},
"payload": {
"test": {
"executions": [{
"language":"python", // 测试语⾔
"framework":"selenium", // 测试框架名
"id":"", // 执⾏结果的 ID
"start_time":""// 开始执⾏的时间,单位毫秒
"finish_time":"" // 执⾏完成的时间,单位毫秒
"name": "⽤例名",
"description":"⽤例描述",
"result": "执⾏结果", //success, failure, error, skip, unexpected_success, expected_failure              "message": "错误消息"
}]
}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。