zoukankan      html  css  js  c++  java
  • 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    输入值,这个alertconfirm 没有对话框就不能用了,不然会报错
    #接受弹窗
    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
     
  • 相关阅读:
    Inno Setup打包程序添加hosts解析
    elasticsearch安装教程
    初级模拟电路:10-2 分贝与伯德图
    初级模拟电路:10-1 对数图与分贝
    初级模拟电路:9-4 运放的数据规格书(v2)
    初级模拟电路:9-4 运放的数据规格书
    初级模拟电路:9-3 运放的其他参数
    重新部署Azure虚拟机
    Linux-NFS(网络文件系统)服务开启
    STM32_使用DAC双通道同时输出对齐的三角波和方波
  • 原文地址:https://www.cnblogs.com/liuqingqing/p/6750075.html
Copyright © 2011-2022 走看看