随着技术的发展,现在的网页提供了越来越丰富的交互方式,例如右击,悬停,拖拽等一些以前只在客户端软件上才有的操作,一些基础的元素操作方法可能满足不了所有的测试需求。对于这方面的操作,Selenium提供了一个ActionChains类来实现以上的功能。这里只对常用的几个方法做介绍,更多信息请查看API文档中class selenium.webdriver.common.action_chains部分的介绍
ActionChains类提供的一些常用方法如下:
click(webElement = None): 左键单击, 如果不提供webElement则默认对鼠标当前位置做操作,一下所有方法皆如此,不再赘述。
context_click(webElement = None): 右击
double_click(webElement=None): 双击
drag_and_drop(source,target): 拖拽,source是拖拽起始的webElement, target就是拖拽到哪个webElement.
move_to_element(toElement): 鼠标移动到指定的webElement
pause(seconds): 停止n秒
send_keys(*keys_to_send): 对当前获得焦点的webElement输入键盘操作。注意这里可以接受一个列表,也就是可以接受多个键盘操作,这为输入组合键提供了途径,详见键盘操作部分。
send_keys_to_element(element,*keys_to_send): 对指定的webElement输入键盘操作。
知道了这些方法要怎么使用呢?下面举个例子,使用非常简单。首先申明一个ActionChains类接受一个driver对象,然后将所要做的操作依次接在ActionChains类之后,最后使用peform()方法来应用所有的方法。
driver = webdriver.Firefox()
driver.get('http://www.testweb.com')
dropdown_menu = driver.find_element_by_id('dropdown1')
submenu = driver.find_element_by_id('submenu1')
#--------第一种用法--------------
ActionChains(driver).move_to_element(dropdown_menu).click(submenu).perform()
#--------第二种用法--------------
actions = ActionChains(driver)
actions.move_to_element(dropdown_menu)
actions.click(submenu)
actions.perform()
前面提到了send_keys接受键盘操作,键盘操作无非就是键盘上的各种字母以及功能键。字母数字没啥可说,输入对应的值就是了。对于一些特殊的各种的功能键Selenium提供了Keys类来实现。下面是Keys类中一些常用功能键的表示
send_keys(Keys.BACK_SPACE): 删除键
send_keys(Keys.SPACE): 空格键
send_keys(Keys.TAB): Tab键
send_keys(Keys.ALT): ALT键
send_keys(Keys.CONTROL):Ctrl键
send_keys(Keys.ESCAPE):ESC键
send_keys(Keys.ENTER):回车键
前面提到过,send_keys接受一个列表,这里就能实现组合键。下面是一个例子。
send_keys(Keys.CONTROL,'c'): Ctrl+c
那以上就是鼠标键盘事件的介绍,非常简单。下一篇打算说一下元素等待的话题。