自动化测试实战之ActionChains模拟用户行为

需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽

解决:selenium提供了一个类来处理这类事件

selenium.webdriver.common.action_chains.ActionChains(driver)

脚本:

from selenium.webdriver.common.action_chains import ActionChains

执行原理:

调用ActionChains的方法时不会立即执行,会将所有的操作按顺序存放在一个队列里,当调用perform()方法时,队列中的事件会依次执行

支持链式写法或者分步写法

ActionChains(driver).click(ele).perform()

鼠标和键盘方法列表:

perform() 执行链中的所有动作

click(on_element=None) 单击鼠标左键

context_click(on_element=None) 点击鼠标右键

double_click(on_element=None) 双击鼠标左键

move_to_element(to_element) 鼠标移动到某个元素

ele.send_keys(keys_to_send) 发送某个词到当前焦点的元素

========== 不常用 ==========

click_and_hold(on_element=None) 点击鼠标左键,不松开

release(on_element=None) 在某个元素位置松开鼠标左键

key_down(value, element=None) 按下某个键盘上的键

key_up(value, element=None) 松开某个键

drag_and_drop(source, target) 拖拽到某个元素然后松开

drag_and_drop_by_offset(source, xoffset, yoffset) 拖拽到某个坐标然后松开

move_by_offset(xoffset, yoffset) 鼠标从当前位置移动到某个坐标

move_to_element_with_offset(to_element, xoffset, yoffset) 移动到距某个元素(左上角坐标)多少距离的位置

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

鼠标事件实战之hover菜单栏弹出

鼠标事件之菜单栏hover弹出

1)、#引入 ActionChains 类

from selenium.webdriver.common.action_chains import ActionChains

2)、move_to_element(to_element) 鼠标移动到某个元素

#对定位到的元素执行鼠标移动到上面的操作

ActionChains(driver).move_to_element(ele1).perform()

自动化测试网页等待时间

强制等待 : (自己调试代码看效果)

from time import sleep

sleep(5)  # 强制等待5秒再执行下一步,缺点是不管资源是不是完成,都必须等待

隐性等待:

driver.implicitly_wait(10)  # 隐性等待,最长等10秒

#设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步,弊端就是程序会一直等待整个页面加载完成,到浏览器标签栏那个加载圈不再转

注意:对driver起作用,所以只要设置一次即可,没有必要到处设置

显性等待:

WebDriverWait 需要配合 until和until_not,程序每隔N秒检查一次,如果成功,则执行下一步,否则继续等待,直到超过设置的最长时间

from selenium.webdriver.support.wait import WebDriverWait

语法:WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

最新文章

  1. jQuery实现方式不一样的跳转到底部
  2. IOS开发网络数据---- AFNetworking的使用
  3. 用TypeScript开发了一个网页游戏引擎,开放源代码
  4. ios 消息转发初探
  5. PHP 设计模式 笔记与总结(7)适配器模式
  6. POST中文乱码解决方案
  7. 15、C#基础整理(递归)
  8. opensuse pptp拨号设置注意事项
  9. android小知识之自定义通知(toast)
  10. 浅析 Jndi / DataSource / ConnectionPool 三者
  11. 把elipse非maven的Struts2+Spring+Ibatis项目导入Idea中
  12. 支持多用户web终端实现及安全保障(nodejs)
  13. acdrem1083 人民城管爱人民 DP
  14. Wiki leaks files backup
  15. 重建索引解决mssql表查询超时的问题
  16. 安装wamp提示You dont't have permission to accesson on this server的解决方案
  17. dsu on tree练习
  18. think in UML(二)
  19. Tensorflow物体检测(Object Detection)API的使用
  20. 需求:过滤下面这个网页里共723行 校对中里 行数为两位数的 行 并设置sz和rz在Windows和Linux之间发送和接收文件不用搭FTP

热门文章

  1. Frequentist 观点和 Bayesian 观点
  2. 李开复:VC看不上你的五个原因
  3. OpenGL(三) RGBA颜色设置
  4. 中英文对照 —— 互联网、IT(信息科技)、编程
  5. PowerDesigner模型分类
  6. 关于 Facebook 的 React 专利许可证
  7. 楼塔当天领袖acm心理(作为励志使用)
  8. docker ubuntu 不选时区
  9. DataSet 互相转换 List
  10. C# 声明基于角色的安全性