前面的例子中,点击事件都是通过click()方法实现鼠标的点击事件。其实在webdriver中,提供了许多鼠标操作的方法,这些操作方法都封装在actionchains类中,包括鼠标右击、双击、悬停和鼠标拖动等功能。
actionchains类提供的鼠标操作事件
- context_click():点击鼠标右键
- double_click():双击鼠标
- drag_and_drop():拖动鼠标
- move_to_element():鼠标悬停
鼠标悬停
页面上有些下拉菜单,在鼠标放到元素上以后,下面的菜单才会显示出来。下面的图片就是一个例子
百度首页上的设置项,下面的菜单默认不会显示,将鼠标停在上面后才会显示,这就是鼠标的悬停操作,菜单显示以后就可以对下面的项进行点击操作
进入搜索设置的代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# -*- coding: utf-8 -*- import time driver = webdriver.chrome() driver.get( "http://www.baidu.com" ) time.sleep( 3 ) settings = driver.find_element_by_link_text( '设置' ) webdriver.actionchains(driver).move_to_element(settings).perform() time.sleep( 1 ) settings_search = driver.find_element_by_class_name( 'setpref' ) settings_search.click() time.sleep( 3 ) driver.close() |
打开页面后,根据链接的文本信息找到设置项,使用actionchains的move_to_element()方法将鼠标悬停在设置上,然后找到搜索设置项
鼠标的右击、双击和拖动事件都是通过上述的方法调用,只要将方法替换一下就可以了。拖动事件需要传入两个参数,第一个参数是拖动的起点元素,第二个参数是终点元素
1
2
3
|
webdriver.actionchains(driver).context_click( "右击的元素定位" ).perform() #右击事件 webdriver.actionchains(driver).double_click( "双击的元素定位" ).perform() #双击事件 webdriver.actionchains(driver).drag_and_drop( "拖动的起点元素" , "拖动的终点元素" ).perform() #拖动事件 |
键盘事件
keys类中提供了几乎所有的键盘事件,在鼠标事件中用到了两个键盘事件,键盘的向下按键(send_keys(keys.down))和键盘的回车事件(send_keys(keys.enter))。键盘的事件需要导入keys模块
1
|
from selenium.webdriver.common.keys import keys |
所有的键盘事件都包含在这个模块中,send_keys用来模拟键盘输入,除此之外,还可以用例模拟键盘上的按键,不仅支持单个的键盘按键,还支持组合按键输入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# -*- coding: utf-8 -*- from selenium import webdriver import time driver = webdriver.chrome() driver.get( "http://www.baidu.com" ) time.sleep( 3 ) driver.find_element_by_id( 'kw' ).send_keys( 'selenium' ) #在搜索框中输入"selenium" driver.find_element_by_id( 'kw' ).send_keys(keys.space) #输入空格键 driver.find_element_by_id( 'kw' ).send_keys( 'python' ) #在搜索框中输入"python" driver.find_element_by_id( 'kw' ).send_keys(keys.control, 'a' ) #输入control+a模拟全选 driver.find_element_by_id( 'kw' ).send_keys(keys.control, 'c' ) #输入control+c模拟复制 driver.find_element_by_id( 'kw' ).send_keys(keys.control, 'v' ) #输入control+v模拟粘贴 driver.find_element_by_id( 'kw' ).send_keys(keys.enter) #输入回车代替点击搜索按钮 time.sleep( 3 ) driver.close() |
下面是一些常用的键盘事件:
– keys.back_space:回退键(backspace)
– keys.tab:制表键(tab)
– keys.enter:回车键(enter)
– keys.shift:大小写转换键(shift)
– keys.control:control键(ctrl)
– keys.alt:alt键(alt)
– keys.escape:返回键(esc)
– keys.space:空格键(space)
– keys.page_up:翻页键上(page up)
– keys.page_down:翻页键下(page down)
– keys.end:行尾键(end)
– keys.home:行首键(home)
– keys.left:方向键左(left)
– keys.up:方向键上(up)
– keys.right:方向键右(right)
– keys.down:方向键下(down)
– keys.insert:插入键(insert)
– delete:删除键(delete)
– numpad0 ~ numpad9:数字键1-9
– f1 ~ f12:f1 - f12键
– (keys.control, ‘a'):组合键control+a,全选
– (keys.control, ‘c'):组合键control+c,复制
– (keys.control, ‘x'):组合键control+x,剪切
– (keys.control, ‘v'):组合键control+v,粘贴
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/zh175578809/article/details/76767748