vb.net中datagridview的鼠标事件_selenium自动化测试中的鼠标事件

在做自动化测试的时候,经常会遇到这种情况,某个页面元素,你必须要把鼠标移动到上面才能显示出元素。那么这种情况,我们怎么处理呢?

selenium给我们提供了一个类来处理这类事件——ActionChains。

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

使用鼠标事件之前需要要导入ActionChains类,导入方法如下:

  1. from selenium.webdriver.common.action_chains import ActionChains

复制代码

那么我们通过一个场景来看下鼠标事件的应用范围吧,如我们现在要去操作下快捷导航中的某个控件(搜索板块控件)

599b8a25100e1373a35aab8a970157d0.png

首先我们得先定位到快捷导航控件,然后通过鼠标事件讲鼠标挪动到快捷导航快捷,那么我们先看下鼠标事件的方法:

1、move_to_element

  1. def move_to_element(self, to_element):
  2. """
  3. Moving the mouse to the middle of an element.
  4. :Args:
  5. - to_element: The WebElement to move to.
  6. """
  7. if self._driver.w3c:
  8. self.w3c_actions.pointer_action.move_to(to_element)
  9. self.w3c_actions.key_action.pause()
  10. else:
  11. self._actions.append(lambda: self._driver.execute(
  12. Command.MOVE_TO, {'element': to_element.id}))
  13. return self

复制代码

其实看源码就会发现方法很简单,需要传入的参数就是鼠标要挪动到的控件上,那么代码如何实现:

  1. from selenium import webdriver
  2. import time
  3. from selenium.webdriver.common.action_chains import ActionChains
  4. driver = webdriver.Chrome()
  5. driver.get('http://www.bcbxhome.com')
  6. driver.maximize_window()
  7. time.sleep(1)
  8. ele = driver.find_element_by_id('qmenu') ###定位到的快捷导航控件
  9. time.sleep(2)
  10. ActionChains(driver).move_to_element(ele).perform()

复制代码

2、move_to_element_with_offset

  1. def move_to_element_with_offset(self, to_element, xoffset, yoffset):
  2. """
  3. Move the mouse by an offset of the specified element.
  4. Offsets are relative to the top-left corner of the element.
  5. :Args:
  6. - to_element: The WebElement to move to.
  7. - xoffset: X offset to move to.
  8. - yoffset: Y offset to move to.
  9. """
  10. if self._driver.w3c:
  11. self.w3c_actions.pointer_action.move_to(to_element, xoffset, yoffset)
  12. self.w3c_actions.key_action.pause()
  13. else:
  14. self._actions.append(
  15. lambda: self._driver.execute(Command.MOVE_TO, {
  16. 'element': to_element.id,
  17. 'xoffset': int(xoffset),
  18. 'yoffset': int(yoffset)}))
  19. return self

复制代码

看到源码我们就知道需要传入三个参数,第一参数就是鼠标从哪里看是挪到,是从这个控件的左上角,偏移量是相对这个左上角进行偏移的,偏移x和y方向

  1. from selenium import webdriver
  2. import time
  3. from selenium.webdriver.common.action_chains import ActionChains
  4. driver = webdriver.Chrome()
  5. driver.get('http://www.bcbxhome.com')
  6. driver.maximize_window()
  7. time.sleep(1)
  8. ele = driver.find_element_by_id('qmenu')
  9. time.sleep(2)
  10. ActionChains(driver).move_to_element_with_offset(ele,10,10).perform()

复制代码

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

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值