鼠标事件

前面例子中我们已经学习到可以用click()来模拟鼠标的单击操作,而我们在实际的web 产品测试中发现,有关鼠标的操作,不单单只有单击,有时候还要和到右击,双击,拖动等操作,这些操作包含在ActionChains 类中。

ActionChains 类鼠标操作的常用方法:

  • context_click()   右击
  • double_click()    双击
  • drag_and_drop()  拖动
  • move_to_element()   鼠标悬停在一个元素上
  • click_and_hold()        按下鼠标左键在一个元素上

1)鼠标右击操作:

context_click() 右键点击一个元素。

                                             图3.4

如图3.4, 假如一个web 应用的列表文件提供了右击弹出快捷菜单的的操作。可以通过context_click()方法模拟鼠标右键,参考代码如下:

代码示例:

#引入ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到要右击的元素
right =driver.find_element_by_xpath("xx")
#对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(right).perform()
....

说明:

from selenium.webdriver.common.action_chains import ActionChains
这里需要注意的是,在使用ActionChains 类下面的方法之前,要先将包引入。

ActionChains(driver)
driver: wedriver 实例执行用户操作。
ActionChains 用于生成用户的行为;所有的行为都存储在actionchains 对象。通过perform()执行存储的行为。


perform()
执行所有ActionChains 中存储的行为。perfrome()同样也是ActionChains 类提供的的方法,通常与ActionChains()配合使用。

除了鼠标右击之外,ActionChains 类还提供了其它的比较复杂的鼠标方法

 

2)鼠标双击操作:

double_click(on_element)  双击点击页面元素

代码示例:

#引入ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到要双击的元素
double =driver.find_element_by_xpath("xxx")
#对定位到的元素执行鼠标双击操作
ActionChains(driver).double_click(double).perform()

对于操作系统的操作来说,双击使用相当频繁,但对于web 应用来说双击的用户比较少,笔者唯一能想到想的场景是地图程序(如百度地图),可以通过双击鼠标放大地图。

3)鼠标拖放操作

drag_and_drop(source, target)   在源元素上按下鼠标左键,然后移动到目标元素上释放。

source: 鼠标按下的源元素。

target: 鼠标释放的目标元素。

代码示例:

#引入ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位源元素的原位置
element = driver.find_element_by_name("xxx")
#定位元素要移动到的目标位置
target = driver.find_element_by_name("xxx")

#执行元素的移动操作
ActionChains(driver).drag_and_drop(element, target).perform()

4)鼠标移动到元素上

move_to_element()  模拟鼠标移动到一个元素上

代码示例:

#引入ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到鼠标移动到上面的元素
above = driver.find_element_by_xpath("xxx")
#对定位到的元素执行鼠标移动到上面的操作
ActionChains(driver).move_to_element(above).perform()

5)按下鼠标左键

click_and_hold() 按住鼠标左键在一个元素

#引入ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到鼠标按下左键的元素
left=driver.find_element_by_xpath("xxx")
#对定位到的元素执行鼠标左键按下的操作
ActionChains(driver).click_and_hold(left).perform()

 

posted on 2016-12-26 10:50  chenzx0918  阅读(198)  评论(0)    收藏  举报

导航