selenium

Posted Lqq`

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium相关的知识,希望对你有一定的参考价值。

from selenium import webdriver(从selenium中引用web driver这个包)
from time import sleep()(引入一个time方法)
driver = web driver.Firefox()(打开火狐浏览器)
driver.get(“http://www.baidu.com”)(改变链接)
driver.quit()(关闭浏览器)
driver.maximize_window()(浏览器页面最大化)
...
driver.get(http://m.mail.10086.cn)(手机界面的邮箱登陆)
print “设置浏览器宽480 高800显示"
driver.set_window_size(480,800)
sleep(2)(显示两秒钟)
driver.quit()
input:输入
print:输出
                         http://blog.csdn.net/fnngj/article/details/25311511
 
20161018
1、python格式注意
if xxxxx
(空格)xxx
或者
def xxxxx
(空格)xxx
for  xxxxx
(空格)xxx
2、代码
a = “python"
for i in a:
     print i//输出 p y t h o n
3、name =“zhangsan"
print”Hello %s,Nice to meet you” %name 
Hello zhangsan ,Nice to meet you
%s(string)只能打印字符串,%d(data) 打印数字 %r 表示打印未知的数据类型
4、range
for i in range(1,10,2):
print i #输出 1,3,5,7,9
range(start ,end ,scan)
5、字典{}表示,一个key对应一个value
zidian = {“senate”:”password”,’man’:’woman’,1:2}
zidian.key()输出key
{’senate’,1,’man’}
zidian.value()输出key
zidian.items()输出key和value
20161019
1、模块调用
def add(a,b):
     print a+b
import pub
print pub.add(4,5)
打印结果:9
若不在同一目录下
import sys #调用sys模块,将目录添加到系统环境变量的path下面
sys.path.append(‘\model’) #此为相对路径,若不在同一目录下用相对路径,pwd查看(常用方法)
from model import pub
print pub.add(4,5)
2、异常处理
try…….except
#coding:utf-8
try:
     aa = ‘异常测试‘
     print aa
except Exception,msg:
     print msg
else:
     print ‘没有异常‘
20161020
1、类与方法
python中用class关键字创建类
class A:
     def add(self,a,b):
          return a+b
class B:
     def sub(self,a,b):
          return a-b
count =B()
print count.add(4,5)#打印结果8
 
我们在 BaseException 后面定义 msg 变量用于接收异常信息,通过 print 将其打印出来。 下面来认识一下 Python 中常见的异常:
异常                                   描述
 
BaseException               新的所有异常类的基类
exception                   所有异常类的基类,但继承 BaseException
 AssertionError                              assert 语句失败
AttributeError              试图访问一个对象没有属性
IOError                     输入输出异常,试图打一个不存的文件(包括其它情况)时引起                                                                  
NsmeError                  使用一个还未赋值对象的变量
IndexError                 在使用序列中不存在的所引进引发
IndentationError           语法错误,代码没有正确的对齐
 KeyboardInterrupt                         Ctrl+C 被按下,程序被强行终止
TypeError                   传入的对象类型与要求不符
 SyntaxError                                  Python 代码逻辑语法出错,不能执行
20161024
1、web driver的8种元素定位方法:
(1)、ID
(2)、name
(3)、class name 
(4)、tag name 
(5)、link text
(6)、partial link text
(7)、xpath
(8)、css selector
2、在python语言中对应的定位方法如下:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()   部分文字链接定位方法
find_element_by_xpath()
find_element_by_css_selector()
3、html的结构
(1)它们都由标签组成:
<hetml></html>
<body><body>
<div><div>
<form><form>
那么html、div就是标签的标签名。
20161025
1、XPath定位
火狐浏览器中添加插件firebug和firepath
点击需要定位的位置就可查看Xpath
find_element_by_xpath(“.//*[@id=‘su‘]")
2、如果一个属性不能唯一的区分一个元素,可以数用逻辑运算符链接多喝属性
find_element_by_xpath(“//input[@id=‘kw’ and @class=’su’]/span/input")
20161026
1、将浏览器屏幕最大化
driver.maximize_window()
2、设置浏览器为固定宽高
driver.get(“http://m.mail.10086.cn")
print”设置浏览器宽480、高800显示"
driver.set_window_size(480,800)
driver.quit()
3、浏览器的前进与后退
前进:driver.forward()
后退:driver.back()
4、简单元素操作
clear()                     清除文本。如果是一个文本输入框
send_key(*value)     在元素上模拟按键输入
click()                       单击元素
size                          返回元素的尺寸
#s = dr.find_element_by_id("kw").size
print s
text                           获取元素的文本
#s = dr.find_element_by_id("kw”).text(常用语断言)
get_attribut(name)     获得属性值,如id
is_displayed()              设置改元素是否用户可见,返回true or false
20161028
1、ActionChains类提供的鼠标操作的常用方法:
perform()   执行所有ActionChains中的存储行为
context_click   右击
double_click     双击 
drag_and_drop()  拖动
move_to_element()   鼠标悬停
from selenium import webdriver
#引入 ActionChains
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Firefox() driver.get("http://yunpan.360.cn") ....
#定位到要右击的元素
right_click =driver.find_element_by_id("xx") #对定位到的元素执行鼠标右键操作 ActionChains(driver).context_click(right_click).perform()
2、鼠标操作
drag_and_drop(source,taget)在源元素上按下鼠标左键,然后移动到目标元素上释放
source:  鼠标拖动的源元素
target:   鼠标是犯法的目标元素
#定位元素的源位置
element = driver.find_element_by_name("xxx")
#定位元素要移动到的目标位置
target = driver.find_element_by_name("xxx")
#执行元素的拖放操作
ActionChains(driver).drag_and_drop(element,target).perform()
3、键盘操作
#引入 Keys 模块
from selenium.webdriver.common.keys import Keys
#删除多输入的一个 m driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
send_keys(Keys.BACK_SPACE) send_keys(Keys.SPACE)
send_keys(Keys.TAB) send_keys(Keys.ESCAPE) send_keys(Keys.ENTER)
制表键(Tab) 回退键(Esc) 回车键(Enter)
删除键(BackSpace) 空格键(Space)
Selenium2 Python 自动化测试实战》样张 send_keys(Keys.CONTROL,‘a‘) 全选(Ctrl+A)
send_keys(Keys.CONTROL,‘c‘) 复制(Ctrl+C) send_keys(Keys.CONTROL,‘x‘) 剪切(Ctrl+X) send_keys(Keys.CONTROL,‘v‘) 粘贴(Ctrl+V) send_keys(Keys.F1) 键盘 F1 ......
send_keys(Keys.F12) 键盘 F12
4、获得验证信息
获得title
title =dr.title
获得URL
now_url = dr.current_url
20161031
1、定位一组元素
#选择页面上所有的tag name为input的元素
inputs = dr.find_elements_by_tag_name(‘input’)
#然后从中过滤出autocomplete==off的元素
for i in inputs:
    if i.get_attribute(‘autocomplete’)==‘off’:
        i.send_keys(’selenium’)
2、dr.find_element_by_link_text(u‘新闻’).click
加’u’一般是解决中文乱码的问题,将中文转化成uncode的形式
3、xpath可以使用and or等布尔类型,还可以使用找父级的方法定位 
4、设置元素等待
WebDriverWait()提供的等待方法
4、1显示等待
element = WebDriverWait(driver,5,0.5).until(
    EC.presence_of_element)located((by.ID,’kw‘)))
driver:驱动
5:最长等待时间
0.5:检测频率
input_:需要检测的元素(定位)
4、2隐试等待
driver.implicitly_wait(30)
设置等待时间
20161101
1、多表单嵌套是不能直接定位到元素的,所以可以用
switch_to_frame()先找到frame.html中的标签,然后再定位百度输入框
#切换到iframe(id = "if”) 
driver.switch_to_frame(“if”)
如果iframe没有id和name
就先定位再用switvh_to_frame方法
#先通过 xpth 定位到 iframe 
if = driver.find_element_by_xpath(‘//*[@class="if”]’)
退出上一层表单
driver.switch_to_default_content()
current_window_handle    #获得当前窗口句柄
window_handles    #返回的所有窗口的句柄到当前会话
switch_to_window()
20161102
1、警告框的处理
text    返回alert/confirm/prompt/中的文字信息
accept    点击确认按钮
dismiss    点击取消按钮,如果有的话。
send_keys    输入值,这个alert\confirm 没有对话框就不能用了,不然会报错
#接受弹窗
driver.switch_to_alert().accept()
2、上传文件
driver.find_element_by_name(“file”).send.keys(‘D:\\upload_fle.txt‘)    #定位上传按钮,添加本地文件
autoit是windows的操作控件
引用本地文件
import os
os.system(‘D:\\upload_fle.txt‘)
3、下载文件
设置浏览器的默认设置,调用firefoxprofile方法
fp.set_preference("browser.download.folderList",2)     #设置成0代表下载到浏览器默认下载地址,设置为2则可以保存到指定目录
fp.set_preference("browser.download.manager.showWhenStarting",False)    #是否显示开始,Ture为显示,Flase为不显示
 fp.set_preference("browser.download.dir", os.getcwd())    #os.getcwd(),返回当前的目录 需要import os
 fp.set_preference(“browser.helperApps.neverAsk.saveToDisk”,    #下载的文件格式
4、对cookie进行操作
driver.get.cookies()    #获得cookie
driver.add.cookie({’name’:’zhuangsan’,’value’:’12346‘})    #添加cookie
打印想要的cookie,使用规定的格式
for cookie in driver.get.cookies():
    print “%s -> %s”%(cookie[’name’],cookie[‘value’])
delete_all_cookies()    #删除cookie信息
5、调用javascript
操作浏览器滚动条
引用js的使用方法
js = “var q=document.documentElemrnt.scrolltop=10000”
driver.execute_script(js)    #该方法可使用js
20161104
1、窗口截图
driver.get_screenshot_as_file(“D:\\baidu_error.jpg”)
2、验证码的处理
(1)、非正式环境的话直接注释掉验证码即可
(2)、若为正式环境的话可设置一个万能码
import random
verify = random.randint(1000,9999)     #生成一个1000到9999之间的随机整数
print u"生成的随机数:%d" %verify
number =input(u"请输入随机数:”)
 
if number  ==verify:
     print u"登陆成功"
elif number == 132741:
     print u"登陆成功"
else:
     print u"验证码输入有误"
randint()用于生成随机数
2、自动化测试模拟
模块化的驱动
登陆和退出不用每次都写的,直接调用模块就行
首先import文件和函数
其次调用函数
写函数的时候再括号里加上一定义值
3、数据驱动
1、txt的文件读取
read()读取整个文件
readline()读取一行数据
readlines()读取所有行数据
文件的读取:file _info = open(‘info.txt’,’r’)
文件多行读取放入values :values = file_info.readlines()
读取用户名和密码
用该方法进行拆分,除痘号外,其它符号同理
liuqingqing,123
username = serch.split(‘,’)[0]
print username 
password = search.split(‘,’)[1]
print password
 

以上是关于selenium的主要内容,如果未能解决你的问题,请参考以下文章

SeleniumSelenium获取Network数据(高级版)

Python爬虫 Selenium -- Selenium简介安装SeleniumSelenium基本使用

seleniumSelenium基于Python3的Web自动化测试脚本在IE上运行慢的解决方法

Selenium+Maven+Jenkins+testNg自动生成测试报告

Selenium selenium.common.exceptions.NoSuchElementException 错误将文本发送到 iframe 中的元素

selenium