之前一直是用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的更多相关文章

  1. 第二个UI脚本--Python+selenium之unittest+HTMLtestRunner及python的继承

    前面有一篇对于常见元素的识别和操作的python自动化脚本,这一篇就接着聊下python的类继承,已经它的第三款unittest框架,和报告收集包HTMLtestRunner的应用. 还是直接上代码吧 ...

  2. python+selenium封装UI自动化框架

    seleinum框架 框架的思想:  解决我们测试过程中的问题:大量的重复步骤,用自动化来实现    1)配置和程序的分离    2)测试数据和程序的分离    3)不懂编程的人员可以方便使用:使用的 ...

  3. Python selenium巧用Javascript脚本注入解决按钮点选问题

    前段时间,笔者忙于应付公司组织的雅思考试,白天.晚上但凡有空,笔者都是埋头伏案,啃剑桥雅思(剑4~剑12)的官方模拟题或者做着与雅思考试相关的准备工作,这个过程持续了40余天.最近总算鼓起勇气走进考场 ...

  4. python+selenium之自定义封装一个简单的Log类

    python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...

  5. 学霸笔记系列 - Python Selenium项目实战(一)—— 怎么去验证一个按钮是启用的(可点击)?

    Q: 使用 Python Selenium WebDriver 怎么去验证一个按钮是启用的(可点击)? A:Selenium WebDriver API 里面给出了解决方法is_enabled() 使 ...

  6. 编写第一个python selenium程序(二)

    上节介绍了如何搭建selenium 系统环境,那么本节来讲一下如何开始编写第一个自动化测试脚本. Selenium2.x 将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里 ...

  7. python+selenium+unnitest写一个完整的登陆的验证

    import unittest from selenium import webdriver from time import sleep class lonInTest (unittest.Test ...

  8. 基于七牛Python SDK写的一个同步脚本

    需求背景 最近刚搭了个markdown静态博客,想把博客的图片放到云存储中. 经过调研觉得七牛可以满足我个人的需求,就选它了. 博客要引用图片就要先将图片上传到云上. 虽然七牛网站后台可以上传文件,但 ...

  9. python+selenium遍历某一个标签中的内容

    一.python+selenium遍历某一个标签中的内容 举个例子:我要获取列表标签<li></li>的内容 根据python+selenium定位到列表整体,使用for循环获 ...

随机推荐

  1. MakeObjectInstance的简单理解

    昨天把MakeObjectInstance的代码详细研究了一下,当然还有众多前辈高手们的帮助,终于大致搞明白了是怎么回事.但是给我顿悟的,不是高手们的帖子,而是来自我自己的一个疑惑,TObjectIn ...

  2. MyBatis主键返回

    在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能. 比如在表的关联关系中,将数据插入主 ...

  3. JavaScript ECAMScript5 新特性——get/set访问器

    之前对get/set的理解一直有误,觉得get set 是对象属性方法.看了别人的博客也有很多疑问,今天系统的做了很多测试终于弄明白了.(自己通过看书和写demo测试的,如有不对欢迎大家批评指正) g ...

  4. Oracle ->> 层级查询语句(hierarchical query)connect by

    Oracle中的Connect By... Start With语句实现了递归查询或者树状查询. Connect By Prior 一方为起始(root)的ID 参考: http://www.360d ...

  5. windows服务异常值framework版本

    sc query WCService | find /i "state"if %errorlevel% == 0 ( net start "WCService" ...

  6. platform设备驱动全透析

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://21cnbao.blog.51cto.com/109393/337609 1.1 ...

  7. ADB安装应用报错 Segmentation fault pm install /data...

    路径一定不能有中文…… 路径一定不能有中文…… 路径一定不能有中文…… 路径一定不能有中文…… 路径一定不能有中文……

  8. 转载]IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本 )

    原文地址:IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本作者:佐佐木小次郎 因为最近项目上要用有关LBS的功能.于是我便做一下预研. 一般说来LBS功能一般分为两块:一块是地理 ...

  9. 用AngularJS开发的过程中如何查看Scope内容

    scope的继承就好比JS的原型链继承,深入理解Scope:http://www.lovelucy.info/understanding-scopes-in-angularjs.html 通过查看官网 ...

  10. MKNetworkKit: 网络处理又一利器

    没有认识MK之前,即便ASI已经不再更新,也没有启用ASI.因为ASI对于网络的处理更偏向于底层,适合针对各种情形的扩展. 但是,今天我要开始使用 MKNetworkKit了,项目在github上,使 ...