秦皇岛提高网站排名,国外网站空间需要备案吗,苏州网络推广seo服务,电气网站模板当你需要执行复杂的操作时#xff0c;比如将一个元素按住拖动到另一个元素上去#xff0c;需要移动鼠标然后点击并按下键盘某个按键等等。
当然#xff0c;在 Web 页面上#xff0c;这种操作好像比较少。
但是#xff0c;如果遇到了怎么办呢#xff1f;这就需要用到 Ac… 当你需要执行复杂的操作时比如将一个元素按住拖动到另一个元素上去需要移动鼠标然后点击并按下键盘某个按键等等。
当然在 Web 页面上这种操作好像比较少。
但是如果遇到了怎么办呢这就需要用到 ActionChains 这个类啦。
ActionChains 提供了对动作的链式操作也就是可以生成一个操作的队列将复杂的操作过程分解成单个操作然后组合起来一次性执行。
这里面主要是鼠标操作加上一些键盘操作。
以简单的鼠标移动为例京东首页上的商品二级分类默认处于隐藏状态需要将鼠标移动到一级分类上才会显示。 我们可以模拟鼠标移动到元素上然后再点击二级菜单比如我们先点击家用电器再点击超薄电视。
# 两种写法一种是直接链式调用另一种分别调用
# 直接链式调用
from selenium.webdriver import ActionChains
# ... 省略打开过程
e driver.find_element_by_link_text(家用电器)
# 将鼠标悬停在家用电器上暂停0.1s
ActionChains(driver).move_to_element(e).pause(0.1).perform()# 第二种
action ActionChains(driver)
action.move_to_element(e)
action.pause(0.1)
action.perform()无论哪种方式动作都是按照它们被调用的顺序执行。 通过 ActionChains 的对象生成操作队列在没有执行提交 perform() 之前所有操作只是暂存于队列中不会实际在页面上操作需要执行 perform() 时才会实际执行操作。
现在我也找了很多测试的朋友做了一个分享技术的交流群共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源没人解答问题坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化性能安全测试开发等等方面有一定建树的技术大牛
分享他们的经验还会分享很多直播讲座和技术沙龙
可以免费学习划重点开源的
qq群号691998057【暗号csdn999】 除了上面的鼠标悬停 move_to_element 操作外还有其他的一些操作
鼠标悬停
1. move_by_offset(xoffset, yoffset) 鼠标移动偏移量
ActionChains(driver).move_by_offset(100, 100).perform()偏移量 从当前位置增加和减少的坐标值 正数为增加负数为减少。 从当前鼠标位置向右下移动假设当前位置为(300,500)则移动到(400, 600)。
2. move_to_element(to_element)鼠标移动到指定元素
e driver.find_element_by_id(su)
ActionChains(driver).move_to_element(e).perform()3. move_to_element_with_offset(to_element, xoffset, yoffset) 将鼠标移动到基于元素的偏移量偏移量基于鼠标左上角的坐标点
e driver.find_element_by_id(su)
ActionChains(driver).move_to_element_with_offset(e, 100, 100).perform()移动到 id 为 su 的元素右下方。
鼠标点击
1. click(on_elementNone) 点击指定元素如果没有指定元素则点击当前鼠标所在位置
e driver.find_element_by_id(su)
ActionChains(driver).click(e).perform()2. double_click(on_elementNone) 双击元素如果没有指定元素则在当前鼠标位置双击
e driver.find_element_by_id(su)
ActionChains(driver).double_click(e).perform()3. context_click(on_elementNone) 在元素上点击鼠标右键如果没有指定则在当前鼠标位置单击右键
e driver.find_element_by_id(su)
ActionChains(driver).context_click(e).perform()4. click_and_hold(on_elementNone) 鼠标按下不松
e driver.find_element_by_id(su)
ActionChains(driver).click_and_hold(e).perform()注意此时鼠标一直处于按下状态直到执行 release() 释放鼠标的操作。
拖动元素
这类操作相当于是鼠标按住某个元素然后移动鼠标实现对元素的拖动操作。当然前提是你操作的元素要能够支持拖动。
1. drag_and_drop(source, target) 在 source 元素上按下鼠标左键并拖动到 target 元素并松开鼠标
e1 driver.find_element_by_id(source)
e2 driver.find_element_by_id(target)
ActionChains(driver).drag_and_drop(e1, e2).perform()按住 e1 元素拖动到 e2 元素。
2. drag_and_drop_by_offset(source, xoffset, yoffset) 在source元素上按下鼠标左键并按偏移量拖动
e driver.find_element_by_id(source)
ActionChains(driver).drag_and_drop_by_offset(e, -100, -100).perform()从 e 元素的位置向左上角移动。
键盘操作
1. send_keys(*keys_to_send)在当前焦点元素发送按键
ActionChains(driver).send_keys(手机).perform()2. send_keys_to_element(self, element, *keys_to_send)向指定元素发送按键
e driver.find_element_by_id(kw)
ActionChains(driver).send_keys_to_element(e, 测试).perform()3. key_down(value, elementNone) 按下一个特殊按键 只能用于 Ctrl AltShift 键注意此时按键只是按下并没有松开用于进行按键组合操作如 CtrlA。
4. key_up value, elementNone) 释放一个按下的键 与 key_down() 配套使用用于释放一个已按下的按键只能用于 Ctrl AltShift 键 如果要发送组合键要这么写
ActionChains(driver).key_down(Keys.CONTROL) \.send_keys(c).key_up(Keys.CONTROL).perform()队列操作
1. perform() 提交队列中的所有操作 所有操作都需要通过 perform() 才会实际提交到浏览器。
2. rest_actions() 清空队列中的操作 将队列中已存储的操作清空。
3. pause(seconds) 暂停所有动作 相当于等待用于链式操作过程中的等待。
4. release(on_elementNone) 松开按下的鼠标 如果有鼠标按下的操作那么需要通过 release() 释放鼠标。
下面是配套资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你 最后 可以在公众号程序员小濠 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容请 “点赞” “评论” “收藏” 一键三连哦