自己开始一个脚本开始学习:

# coding = utf-8
from selenium import webdriver browser = webdriver.Firefox() browser.get("http://www.baidu.com")
browser.find_element_by_id("kw").send_keys("selenium")
browser.find_element_by_id("su").click()
browser.quit()
脚本实现打开百度浏览器,输入seleniu查询字段,点击“百度一下”按钮,退出浏览器。


browser = webdriver.Firefox()

使用的火狐浏览器,当前也可以使用其他的。

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

获取地址

browser.find_element_by_id("kw").send_keys("selenium")

百度查询输入框对应的代码如下所示:

<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">

一个控件有若干属性id 、name等,百度输入框的id 叫kw ,因此取的id值。

browser.find_element_by_id("su").click()

百度的查询按钮代码如下所示:

<input id="su" class="bg s_btn" type="submit" onmouseout="this.className='bg s_btn'" onmousedown="this.className='bg s_btn s_btn_h'" value="百度一下">

查询按钮id为su,行为为click()


关闭浏览器

browser.quit()

不仅关闭窗口,还会彻底的退出webdriver,释放与driver server之间的连接。

close方法关闭当前的浏览器窗口。简单来说quit是更加彻底的close,quit会更好的释放资源,适合强迫症和完美主义者。


添加休眠时间

通过增加休眠时间,减慢操作过程。

# coding = utf-
from selenium import webdriver
import time browser = webdriver.Firefox() browser.get("http://www.baidu.com")
time.sleep(0.3) #sleep 0.3s
browser.find_element_by_id("kw").send_keys("selenium")
browser.find_element_by_id("su").click()
time.sleep() #sleep 3s
browser.quit()

time.sleep() 函数可以在任意位置使用。它主要用于由于网络原因或页面加载慢的情况下,更能增实的模拟用户的行为。如查询时输入selenium,搜索按钮还没有加载出来,那脚本就会报错,如果在适合的位置增加了休眠时间就有助于减少网络原因造成的脚本执行失败。


打印title与URL

# coding = utf-8
from selenium import webdriver
import time browser = webdriver.Firefox() browser.get("http://www.baidu.com")
time.sleep(0.3) #sleep 0.3s
browser.find_element_by_id("kw").send_keys("selenium")
browser.find_element_by_id("su").click()
time.sleep(1) #sleep 3s
print browser.title #把title页面打印出来
browser.quit()

直接执行可以看出打印结果:

>>> selenium_百度搜索

访问URL

web UI测试里最简单也是最基本的事情就是访问1个链接了。在python的webdrive中,访问url时应该使用get方法。

#coding=utf-8

from selenium import webdriver
import time browser = webdriver.Firefox() #访问百度首页
first_url= 'http://www.baidu.com'
print "now access %s" %(first_url)
browser.get(first_url)
time.sleep(2) browser.quit()

将浏览器最大化

实际脚本在执行过程中并非是最大化的,而当我们在测试中使用一些基于图像和坐标的辅助测试工具时,我们就会需要使浏览器在每次测试时保存最大化,以便在同一分辨率下进行图像比对和坐标点选。

举例来说,如果在webdriver测试中使用了sikuli来对flash插件进行操作的话,把浏览器最大化无疑是一个比较简单的保证分辨率统一的解决方案。

# coding = utf-8
from selenium import webdriver
import time browser = webdriver.Firefox() browser.get("http://www.baidu.com")
time.sleep(0.3) #sleep 0.3s print "浏览器最大化"
browser.maximize_window() #将浏览器最大化显示 browser.find_element_by_id("kw").send_keys("selenium")
time.sleep(1) #sleep 1s browser.find_element_by_id("su").click() browser.quit()

设置浏览器大小

设置浏览器窗口的大小有下面两个比较常见的用途:

  • 在统一的浏览器大小下运行用例,可以比较容易的跟一些基于图像比对的工具进行结合,提升测试的灵活性及普遍适用性。比如可以跟sikuli结合,使用sikuli操作flash;

  • 在不同的浏览器大小下访问测试站点,对测试页面截图并保存,然后观察或使用图像比对工具对被测页面的前端样式进行评测。比如可以将浏览器设置成移动端大小(320x480),然后访问移动站点,对其样式进行评估;

# coding = utf-8
from selenium import webdriver
import time browser = webdriver.Firefox() browser.get("http://www.baidu.com")
time.sleep(0.3) #sleep 0.3s print "浏览器宽480,高800"
browser.set_window_size(480,800) #设置大小 browser.find_element_by_id("kw").send_keys("selenium")
time.sleep(1) #sleep 1s browser.find_element_by_id("su").click() browser.quit()

webdriver提供了很多调整浏览器窗口的接口,比如set_window_position(设置或获取浏览器的位置)。在一般情况下这些功能并不常用。


浏览器前进与后退功能

浏览器上有一个后退、前进按钮,对于浏览网页的人是比较方便的;对于做web自动化测试的来说应该算是一个比较难模拟的问题;其实很简单,下面看看python的实现方式

#coding=utf-8

from selenium import webdriver
import time
import os if "HTTP_PROXY" in os.environ:del os.environ['HTTP_PROXY'] browser = webdriver.Firefox() #访问百度首页
first_url= 'http://www.baidu.com'
print "now access %s" %(first_url)
browser.get(first_url)
time.sleep(2) #访问新闻页面
second_url='http://news.baidu.com'
print "now access %s" %(second_url)
browser.get(second_url)
time.sleep(2) #返回(后退)到百度首页
print "back to %s "%(first_url)
browser.back()
time.sleep(1) #前进到新闻页
print "forward to %s"%(second_url)
browser.forward()
time.sleep(2) browser.quit()

if "HTTP_PROXY" in os.environ:del os.environ['HTTP_PROXY'] 这行加不加都成。

说实话,这两个功能一般不太常用。所能想到的场景大概也就是在几个页面间来回跳转,省去每次都get url。



webdriver(python)学习笔记二的更多相关文章

  1. python学习笔记(二)、字符串操作

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...

  2. Python 学习笔记二

    笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...

  3. (10.1)Python学习笔记二

    1.在项目工程中要模块化测试一个开发的功能,在测试通过后交付给项目组其他人员继续开发.要保证代码开发的性能和效率以及可扩展性. 2.项目工程中的文件夹分类要功能模块明确清晰,在python中引入某一个 ...

  4. webdriver(python) 学习笔记三

    知识点:简单的对象定位 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象.一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪 ...

  5. Python学习笔记二

    ---恢复内容开始--- 一. python几种数据类型的比较. 从以下几个方面比较: 1. 是否可变. 不可变类型:变量的值可以发生变化,id也变了,相当于创建了一个新的对象,所以一修改值,id就变 ...

  6. Python学习笔记(二)

    标识符和关键字 1,邮箱的Python标识符是任意长度的非空字符序列(引导字符+后续字符.) python标识符必须符合两条规则--标识符区分大小写 (1)只要是unicode编码字母都可以充当引导字 ...

  7. python学习笔记(二):python数据类型

    上一篇博客写了python的入门和简单流程控制,这次写python的数据类型和各种数据类型的内置方法.一.数据类型是什么鬼?计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各 ...

  8. python学习笔记二:流程控制

    一.if else: #!/usr/bin/python x = int(raw_input('please input:')) if x >= 90: if x >= 95: print ...

  9. python 学习笔记二 (列表推导式)

    2018年年初写了第一篇博客,说要做一个认真的技术人 https://www.cnblogs.com/yingchen/p/8455507.html 今天已经是11月19日了,这是第二篇博客,看来坚持 ...

  10. python学习笔记二:(python3 logging函数中format说明)

    背景,在学习logging时总是遇到无法理解的问题,总结,尝试一下更清晰明了了,让我们开始吧! logging模块常用format格式说明 %(levelno)s: 打印日志级别的数值 %(level ...

随机推荐

  1. POJ2002Squares

    http://poj.org/problem?id=2002 题意 : 就是给你很多点的坐标,任取四个,看能组成多少个不同的正方形,相同的四个点,不同顺序构成的正方形视为同一正方形. 思路 : 就是一 ...

  2. Android 加载时在actionBar右上角添加一个加载图标

    ①首先要在Activity的  setContentView()方法前调用requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); // ...

  3. Mysql 1030 Got error -1 from storage engine 错误解决

    检查你的my.cnf或my.ini,里面会有一个参数innodb_force_recovery,你看看他的值,默认是没有这个参数,没有的话,他的默认值是0,这个参数的值如果大于0,innodb会被禁止 ...

  4. 内存对齐-C语言struct内存占用问题

    转1个写的比较全面的. http://hubingforever.blog.163.com/blog/static/17104057920122256134681/ 本文编辑整理自:http://hi ...

  5. 【转载】Dom篇

    一. 初探Dom     1. Dom介绍 二. Dom基础     1. window顶级对象     2. body.document对象事件     3. 通用的HTML元素的事件     4. ...

  6. *[hackerrank]Girlfriend & Necklace

    https://www.hackerrank.com/contests/w8/challenges/gneck 有点意思.是DP,最优解包含最优子问题.F(X)=F(X-1)+F(X-3).因为F(X ...

  7. SpringMVC学习总结(五)——SpringMVC文件上传例子

    这是用的是SpringMVC-3.1.1.commons-fileupload-1.2.2和io-2.0.1 首先是web.xml <?xml version="1.0" e ...

  8. 使用CAShapeLayer与UIBezierPath画出想要的图形

    使用CAShapeLayer与UIBezierPath可以实现不在view的drawRect方法中就画出一些想要的图形 步骤: 1.新建UIBezierPath对象bezierPath 2.新建CAS ...

  9. Photoshop:制作方块背景

    1.填充背景色 2.滤镜->杂色->添加杂色 3.滤镜->像素化->马赛克 4.添加横线,明度-10 最终效果 附: 利用:查找边缘.最小值,还可以做这样的效果

  10. NDK(18)使用C++ STL

    1,在Application.mk 中使用 APP_STL := stlport_static 等. APP_ABI := x86 armeabi APP_PLATFORM := android-15 ...