第一个UI脚本--python+selenium
之前一直是用java+selenium做自动化测试的,最近因为工作需要,需要用pyhton+selenium去实现,于是就赶驴上架,熟悉了一下python的语法和脚本的编写过程,下面是一个简单的脚本,但是基本涵盖了目前UI端比较常见的对象的识别和操作,比如输入框,按钮,下拉框,radio, checkbox, 链接, 鼠标脚本的操作以及脚本中js的使用。
上代码吧:
# coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
import time driver=webdriver.Firefox()
driver.maximize_window()
driver.get('c:\\test.html')
def button():
btn=driver.find_element_by_id('user')
btn.send_keys('hello')
print('finish')
driver.close() def select():#se=driver.find_element_by_name('select')
#se.find_element_by_xpath('//option[@value="audi"]').click se=Select(driver.find_element_by_name('select'))
se.select_by_value('audi')
se.select_by_index(2)
time.sleep(5) def link():
lk=driver.find_element_by_class_name('baidu')
lktext=lk.get_attribute('text')
print(lktext)
lk.click() def checkbox():
ck=driver.find_element_by_name('checkbox1')
checked=ck.get_attribute('checked')
print(checked)
ck.click() def submit():
st=driver.find_element_by_class_name('button')
js='var st=document.getElementsByName("button");st.click()'
driver.execute_script(js) def js():
input=driver.find_element_by_id('user')
driver.execute_script('arguments[0].value="123"',input) def alert():
al=driver.find_element_by_class_name('alert')
al.click()
alert=driver.switch_to_alert()
print alert.__getattribute__('text')
time.sleep(5)
alert.accept()
#alert.dismiss() def switch():
#switch_to_window, switch_to_frame
#current_window_handle, window_handles
newwin=driver.find_element_by_class_name('open')
newwin.click()
time.sleep(3)
current=driver.current_window_handle
allhandle=driver.window_handles
for hd in allhandle:
print hd
driver.switch_to_window(allhandle[1]) time.sleep(3)
driver.switch_to_window(allhandle[0]) def action():
el=driver.find_element_by_class_name('over')
ActionChains(driver).move_to_element(el).perform()
time.sleep(3)
el2=driver.find_element_by_id('over')
#print(el2.get_attribute('text')) def wait():
driver.implicitly_wait(5)
driver.find_element_by_class_name('over') WebDriverWait(driver,5).until(lambda driver:driver.find_element_by_class_name('open').is_displayed()) if __name__=='__main__':
wait()
这个主要是对元素的操作,脚本中并未涉及到断言和报告的收集,后面补上这块的。
第一个UI脚本--python+selenium的更多相关文章
- 第二个UI脚本--Python+selenium之unittest+HTMLtestRunner及python的继承
前面有一篇对于常见元素的识别和操作的python自动化脚本,这一篇就接着聊下python的类继承,已经它的第三款unittest框架,和报告收集包HTMLtestRunner的应用. 还是直接上代码吧 ...
- python+selenium封装UI自动化框架
seleinum框架 框架的思想: 解决我们测试过程中的问题:大量的重复步骤,用自动化来实现 1)配置和程序的分离 2)测试数据和程序的分离 3)不懂编程的人员可以方便使用:使用的 ...
- Python selenium巧用Javascript脚本注入解决按钮点选问题
前段时间,笔者忙于应付公司组织的雅思考试,白天.晚上但凡有空,笔者都是埋头伏案,啃剑桥雅思(剑4~剑12)的官方模拟题或者做着与雅思考试相关的准备工作,这个过程持续了40余天.最近总算鼓起勇气走进考场 ...
- python+selenium之自定义封装一个简单的Log类
python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...
- 学霸笔记系列 - Python Selenium项目实战(一)—— 怎么去验证一个按钮是启用的(可点击)?
Q: 使用 Python Selenium WebDriver 怎么去验证一个按钮是启用的(可点击)? A:Selenium WebDriver API 里面给出了解决方法is_enabled() 使 ...
- 编写第一个python selenium程序(二)
上节介绍了如何搭建selenium 系统环境,那么本节来讲一下如何开始编写第一个自动化测试脚本. Selenium2.x 将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里 ...
- python+selenium+unnitest写一个完整的登陆的验证
import unittest from selenium import webdriver from time import sleep class lonInTest (unittest.Test ...
- 基于七牛Python SDK写的一个同步脚本
需求背景 最近刚搭了个markdown静态博客,想把博客的图片放到云存储中. 经过调研觉得七牛可以满足我个人的需求,就选它了. 博客要引用图片就要先将图片上传到云上. 虽然七牛网站后台可以上传文件,但 ...
- python+selenium遍历某一个标签中的内容
一.python+selenium遍历某一个标签中的内容 举个例子:我要获取列表标签<li></li>的内容 根据python+selenium定位到列表整体,使用for循环获 ...
随机推荐
- 【golang】用container/list实现栈(Stack)
go语言中的container有heap.list.ring,没有stack. 其中heap是优先级队列,虽然有Push()/Pop()接口,但是使用heap要实现heap.Interface接口,不 ...
- E时代主机,其实做一个小虚拟主机还是不错的
http://www.idcen.com/ 做微信没有网上测试地址,找了一下发现以前用过的.记录一下.一个100m的虚拟主机需要三四十块钱,做微信,做一个小型网站还是够用的,就是mysql有点问题,不 ...
- 关于java中split的使用
之前在http://shukuiyan.iteye.com/blog/507915文中已经叙述过这个问题,但是最近一次笔试中居然有碰到了这个知识点,而且还做错了,囧!学艺不精啊.题目大概是这样的: ) ...
- left join查询结果大于原始数据
left join onon后面一定是一个主键或者是一个值为唯一的字段吗 on后面关联的条件如果是1对1的数量就不变,如果是1对多的数量就会增加 追问: 问题就在这,我1对多了 追答: 通常的做法是 ...
- VNC+SSH相关应用
1.安装vnc-server vncviewer2.执行vncserver 输入密码3.执行vncserver -kill :1 杀死1号屏幕4.修改/root/.vnc/xstartup u ...
- java基础篇---I/O技术
java基础篇---I/O技术 对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...
- CrazePony飞行器--相关资料网址
Crazepony官网:http://crazepony.github.com/ Crazepony百科:http://crazepony.github.com/wiki.html Crazepony ...
- win7下制作ubuntu系统安装启动盘和U盘安装ubuntu全过程
在我搞坏了两个系统之后,一切都得从头开始了,这回好了,电脑就是一台裸机了.没办法,重新下win7吧.这个要先做一个win7的启动盘,然后再安装,只能说我技术不行,没能把win7搞定.让大神给装的win ...
- shell进行mysql统计
array=(江苏 浙江 新疆 宁夏 广东 福建 重庆 江西 吉林 湖南 山东 云南 上海 河北 黑龙江 北京 四川 河南 山西 湖北 辽宁 安徽 陕西 广西 贵州 内蒙古 天津 甘肃 海南 青海 ...
- 图片缓存之内存缓存技术LruCache,软引用
每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常, 这个问题曾经让我觉得很烦恼,后来终于得到了解决, 那么现在就让我和大家一起分享一下吧. 这篇博文要讲的图片缓存机制,我接触到的有两 ...