UI自动化工具篇-Selenium

一、介绍

      1.0是通过js注入的方式,缺点是速度不理想,稳定性依赖selenium内核对API翻译成Javascript质量高低

      2.0是通过与浏览器通讯方式,webdriver通过原生浏览器或浏览器扩展直接控制浏览器,而且是针对各个浏览器而开发,取代了嵌入到被测web应用中的JavaScript优势:运行稳定、速度快,独立API易学、易维护、扩展性强

      API文档:https://seleniumhq.github.io/selenium/docs/api/py/api.html

工作原理:

二、Webdriver

  1.Driver继承关系

  2.Driver常用方法-浏览器相关操作:

    4个导航:get、back、forward、refresh

    3个get:title、current_url、page_source

    2个关闭:close、quit

    1组管理窗口方法:maximize_window、get_window_size、set_window_size

    1组截图方法:get_screenshot_as_file(获取当前浏览器页面的截图,出现IOError时返回False,成功返回True)、get_screenshot_as_base64(保存是base64的编码格式,一般在html页面会用到)、get_screenshot_as_png

  3.查询元素driver.findElement(By):通过id、name、class name、xpath、css、link_text、Partial link text、tag name、组合查找(如:driver.find_element_by(id,"search-form").find_element_by(tag_name,'button')注意:里面不要跟xpath)

  4.复合元素及多元素定位:driver.findElements(By)返回的是集合

  5.基本控件的调用方法:

    input输入框:sendkey、clear

    超链接:click、获取属性

    select下拉菜单:selectByValue(是option参数的value属性)、selectByIndex、selectByVisbleText

    单选radiobox:click、isSelected

    多选checkbox:click、isSelected

    button:click、isEnabled

 6.获取对象属性或文本值:getAttribute()、getText()

 7.事件操作:Actions类,其位置是selenium.webdriver.common.action_chains,主要作用是定义了一些模拟用户鼠标,键盘操作,一般是要触发一些js函数或者js事件时用到这个类

     ActionChains(driver) 后面跟动作函数如click(e)最后加回放perform()

   a. 常用函数-鼠标操作包含:click、move_to_element、double_click(左键双击)、click_and_hold(左键按下操作)、context_click(右键单击)、drag_and_hold(元素拖拽)、release(在某个元素松开鼠标)

  b.键盘操作:selenium.webdriver.common.keys        方法:send_keys发送到当前焦点元素

send_keys_to_element(element)发送某个键到指定元素上

  c.跳转driver.switchTo():

switch_to_alert(windows弹窗一些操作):Alert对象(accept()、dissmiss()、getText()、sendKeys)

 d.switch_to_frame(页面嵌套):

  (1).三种定位方式: id或name、或者能通过页面知道是第几个、xpath

  (2).两种回退方法:switch_to_parent_frame()、switch_to_default_content()切换到最顶层位置;注意:如果元素无法操作,请检查是否在frame中

      switch_to_window(window_name这里面的name不是窗口标题,是一个字符串):通常用获取句柄方式来切换窗口/页面的场景,获取句柄方法:current_window_handle、window_handles或者用常用方法封装,跳转到最新打开的窗口

 e.cookie类:首先先创建cookie,如{"name":"xxx","value":"yy"},用到driver.add_cookie(cookie),设置cookie所属的域,添加后刷新页面

 f.执行JS:页面下滑到底部execute_script(window.scrollTo(0,3000));移除input属性execute_script(document.getElementById(\"text\").readOnly=false);显示:execute_script(document.getElementById(\"img_good\").style.display=\"block\")

g.截图:封装成函数,以时间戳存储

h.页面等待:

(1)等待固定时长:time.sleep()

(2)隐式等待方式:在查找元素时的最大等待时间driver.implicity_wait(5)

(3)智能等待:selenium.webdriver.support.wait 的WebDriverWait(driver,最长等待时长,轮询间隔).until(结束条件:匿名函数写法/自定义函数规则/expected_conditions(注意:位置在selen.webdriver.support)),其应用场景:1.加载慢的元素(订单号)2.等待元素可操作后,点击(阅统读同意协议),版本升级、好评、广告弹层处理等

I.文件上传:上传的本质是input对象,可以直接输入文件路径,从而绕过点击后弹出的windows控件

j.文件下载: 下载是通过设置浏览器属性,关闭下载提示框,设置默认下载保存路径FirefoxProfile().setPrefrence,有四种方式:browser.download.dir

、browser.download.folderList(0是桌面,1是"我的下载",2是自定义)、browser.download。manager.showWhenStarting、browser.helperApps.neverAsk.saveToDisk

 

  

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿宝999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值