web自动化02-鼠标操作-键盘操作-元素等待-下拉选择框-弹出框-滚动条-frame切换-多窗口切换-窗口截图-cookie处理

  

鼠标操作
  • 导包

    from selenium.webdriver import ActionChains
  • 实例化鼠标对象

    action = ActionChains(driver)
  • 调用鼠标方法

    #鼠标右击
    action.context_click()
    #鼠标双击
    action.double_click()
    #鼠标拖拽,例如登录时经常用到将元素拖到到指定位置进行验证,soure:表示被拖动元素对象
    #,target表示目标元素
    action.drag_and_drop(soure,target)
    #悬浮操作,element表示悬浮的元素对象
    action.move_to_element(element)
    • 注意点:调用鼠标方法,还不会执行鼠标操作,只是将需要进行的操作指令存储到action鼠标对象内

  • 执行鼠标操作


    #执行鼠标操作
    #执行perform()方法后才会执行鼠标操作
    #注意:在执行鼠标操作脚本时不能手工移动鼠标
    action.perform()
键盘操作
  • 导包

    from selenium.webdriver.common.keys import Keys
  • 执行键盘操作方法

#Keys类封装了除了26个字母和数字键以外的所有键符
#调用send_keys方法,直接调用Keys里面指定键符做为参数来执行键盘操作
#1.单个按键操作
element.send_keys(Keys.BACK_SPACE) #删除键
element.send_keys(Keys.SPACE) #空格键
#2.组合按键操作
element.send_keys(Keys.CTRL,'a') #选中
element.send_keys(Keys.CTRL,'c') #复制

 

元素等待

隐示等待

#方法,timeout表示的最大超时时长,单位秒
driver.implicitly_wait(timeout)
"""
特点:
1.全局只需要设置一次
2.作用于所有元素定位
3.未找到元素抛出异常:NoSuchElementException
"""

显示等待

#导包
from selenium.webdriver.support.wait import WebdriverWait
#使用方法
#1.timeout:表示超时时间
#2.poll_frequency:表示间隔时间,默认为0.5s
#3.util:直到...时,下面表示直到找到id为userA的元素时
WebDriverWait(driver,timeout,poll_frequency).util(lambda x:x.find_element_by_id('userA'))
"""
特点:
1.针对单个元素生效
2.封装在WedDriverWait类中,需要导包
3.未找到元素抛出异常:TimeOutException
"""

 

下拉选择框

 

  导包

  实例化下拉框对象

  执行下拉框选中的操作

from selenium.webdriver.support.select import Select
#element为html内所要操作的<select>下拉框标签元素
select = Select(element)

#通过索引选择对应选项
#注意:index从0开始计数
select.select_by_index(index)
#通过选项元素的value值选择对应选项
select.select_by_value(value)
#通过选项元素的文本信息选择对应选项
select.select_by_visiable_text(text)

 

弹出框
    • 常用弹出框

    <!--alert 警告框:包含确定按钮和提示信息 -->
    <input type=“button” onclick=“alert(‘我是警告框’)” value="alert"/>
    <!--confirm 确认框:包含确认按钮和取消按钮和提示信息-->
    <input type=“button” onclick=“confirm(‘我是确认框’)” value="confirm"/>
    <!--prompt 提示框:包含确认按钮和取消按钮、提示信息以及信息输入框-->
    <input type=“button” onclick=“prompt(‘我是提示框’)” value="prompt"/>
    • 弹出框处理方法

    #获取弹出框对象
    alert = driver.switch_to.alert
    #调用弹出框对象方法
    #返回弹出框信息
    alert.text
    #接受对话框
    alert.accept()
    #取消度画框
    alert.dissmiss()

    """
    注意:
    1.上面的处理方法对:alert/confirm/prompt三种弹出框通用
    2.alert没有取消按钮,但alert.dissmiss()对其同样生效
    """
  • 滚动条操作

    #1.使用js的方法控制滚动条
    js = "window.scrollTo(0,1000)"
    #2.selenium执行JavaScript脚本
    driver.execute_script(js)

    """
    注意:
    1.selenium本身没有提供直接操作滚动条的方法,但是js可以控制滚动条操作
    2.selenium提供了执行js的方法
    """
frame切换
  • frame:Html页面中的一种框架,主要作用是在当前页面中指定区域显示另外一个页面

  • frame切换处理方法


    #切换frame,frame_reference表示可定位对应frame框架标签的属性:id、name等
    driver.switch_to.frame(frame_reference)
    #回到默认页面
    driver.switch_to.default_content()
    """
    在frame中操作其他页面,必须先返回到默认页面才能进行其他操作
    """

     

多窗口切换
  • 句柄:handle,页面窗口唯一识别码

  • 切换窗口方法


    #获取页面当前句柄
    driver.current_window_handle
    #获取所有页面句柄
    driver.window_handles
    """
    注意:获取所有句柄信息返回的一组句柄信息,排序根据页面窗口打开的顺序排序,获取指定的页面句柄添加
    对应的索引即可
    """
    #跳转指定页面
    driver.switch_to.window(handle)

 

窗口截图
  • 窗口截图


    #直接调用selenium中的方法即可,imgpath为存放路径
    driver.get_screenshot_as_path(imgpath)
    #处理图片重复方法,只需要参数化文件名称即可
    imgpath = time.strf('%Y%m%D%-%H%M%S%'){}.test.png

    """
    注意:
    1.图片存放路径必须先创建好,get_screenshot_as_path()方法不自动化创建路径
    2.图片格式必须为png
    """
cookie处理
  • 处理验证码的几种方式

    • 去掉验证码

    • 设置万能验证码

    • 验证码识别技术

    • 记录cookie

  •  

    cookie概念

     

      • cookie是有web服务器产生并保存在客户浏览器上的小文本文件,包含了用户一些相关信息

      • cookie数据格式:由键值对组成

    • cookie使用过程

      • 客户端登录系统向服务器发送登录请求,服务器会根据登录请求数据判断用户身份,验证通过后颁发对应的cookie信息并同请求结果一起返回给客户端。

      • 客户端再次请求服务器相关请求数据时,会将cookie一并发送给服务端,服务端判断cookie信息即可判断用户的状态

      • 常用场景:

        • 记住登录状态

        • 游客加入购物车

    • cookie处理方法


      #获取指定cookie信息 name:表示cookie的名称
      driver.get_cookie(name)
      #获取全部cookie
      driver.get_cookies
      #添加cookie
      #cookie_dict:格式为字典,必须包含name和value键和键值,用来决定cookie必选信息
      driver.add_cookie(cookie_dict)

      """
      注意:
      1.在实际测试过程,如果是采用的cookie技术进行会话跟踪需要确定好对应确认用户信息的cookie是哪个;
      2.在谷歌浏览器拷贝cookie信息时需要鼠标三击选择全部信息;
      3.多个浏览器同时登录时可能出现都能登录但是cookie不一样的情况,不影响登录
      """
posted @ 2019-07-10 17:02  snailon  阅读(350)  评论(0)    收藏  举报