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

# 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. 简单易懂的现代魔法——Play Framework攻略2

    接前文:http://www.cnblogs.com/Kassadin/p/4335908.html 上次讲到Play Framework开发环境的配置,以及第一个Hello World程序:本次主要 ...

  2. hdu1301Jungle Roads

    http://acm.hdu.edu.cn/showproblem.php?pid=1301 最小生成树模板题 #include<iostream> #include<stdio.h ...

  3. 套题T1

    间隙妖怪(gap.cpp/c/pas) 题目描述: 八云紫是幻想乡的间隙妖怪.她喜欢和八云橙玩一个叫做翻转的游戏.具体规则如下,八云紫对一个长度为N字符串做M次翻转操作,每次操作给定一个X,八云紫将X ...

  4. 40. Combination Sum II

    题目: Given a collection of candidate numbers (C) and a target number (T), find all unique combination ...

  5. mysql: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x90</...'

    插入数据出现问题,因为包含了特殊字符. 现象: 插入的数据中如果含有某些特殊字符,会导致插入数据失败,例如字符串”测试**插入数据...“,在console中insert是正常的,但是使用java代码 ...

  6. OpenCV码源笔记——Decision Tree决策树

    来自OpenCV2.3.1 sample/c/mushroom.cpp 1.首先读入agaricus-lepiota.data的训练样本. 样本中第一项是e或p代表有毒或无毒的标志位:其他是特征,可以 ...

  7. ios7 webapp touch bug

    // ios7 touchstart bug if(navigator.userAgent.indexOf("iPhone OS 7") != -1){ var startX = ...

  8. android.content.Context 含义及使用

    Context字面意思上下文,位于framework package的android.content.Context中,其实该类为LONG型,类似Win32中的Handle句柄,很多方法需要通过Con ...

  9. RecyclerView(4)简单示例

    1,RecyclerViewFrgmt import com.example.adapter.R; import android.app.Fragment; import android.os.Bun ...

  10. NDK(21)JNI的5大正确性缺陷及优化技巧(注意是正确性缺陷)

    转自 : http://www.ibm.com/developerworks/cn/java/j-jni/index.html JNI 编程缺陷可以分为两类: 性能:代码能执行所设计的功能,但运行缓慢 ...