selenium处理页面常见问题(四):鼠标悬停、拖拽、点击,键盘组合键

鼠标键盘这部分操作用到的是ActionChains这个模块,这代表一个动作链,可以依次执行一系列动作。导包方法为:

from selenium.webdriver.common.action_chains import ActionChains

ActionChains支持的动作包括:

click(on_element=None):鼠标点击,如果on_element=None,点击鼠标当前位置
click_and_hold(on_element=None):鼠标点击并hold
release(on_element=None):释放鼠标按键,mouse_up 
context_click(on_element=None):鼠标右键单击
double_click(on_element=None):鼠标双击
drag_and_drop(source, target):鼠标拖拽,source元素按下,到target元素松开
drag_and_drop_by_offset(source, xoffset, yoffset):鼠标根据offset拖拽
move_by_offset(xoffset, yoffset):移动鼠标到offset位置
move_to_element(to_element):移动鼠标到element位置
move_to_element_with_offset(to_element, xoffset, yoffset):移动鼠标至to_element元素的offset位置,以该元素左上角为基准

key_down(value, element=None):键盘按下Keys为value的键,不释放,value的值定义在selenium.webdriver.common.keys.Keys中
key_up(value, element=None):键盘释放值为value的键
send_keys(*keys_to_send):输入内容到当前聚焦的元素,keys值也是Keys中的
send_keys_to_element(element, *keys_to_send):输入内容到某个element

pause(seconds):暂停所有输入几秒钟
reset_actions():清除当前链上保存的所有action
perform():执行当前链上保存的所有action

一些常用操作:

1. 鼠标悬停某标签,出现下拉菜单,选择菜单中的选项

例如百度首页“设置”标签,鼠标悬停出现下拉菜单:

menu = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(menu).perform()
driver.find_element_by_xpath('//div[@id="wrapper"]/div[6]/a[1]').click()

2. 键盘操作:键盘组合键

例如键盘按下ctrl+c,相当于先按ctrl,再输入c,再松开ctrl

ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()

另:

注意除了 ActionChains类有 send_keys(*keys_to_send)方法外,WebElement 类也有一个 send_keys_to_element(*keys_to_send)方法,这两个方法对于一般的输入操作基本上相同,不同点在于以下几点:

第一:Actions 中的 send_keys(*keys_to_send)对修饰键操作后并不会释放,也就是说当调用 actions.send_keys(Keys.ALT)、 actions.send_keys(Keys.CONTROL)、 action.send_keys(Keys.SHIFT) 的时候,相当于调用 actions.key_down(keys_to_send),而如果在现实的应用中想要模拟按下并且释放这些修饰键,应该先action.reset_actions()重设action,然后再调用 action.send_keys(keys.NULL).perform()取消按下的修饰键。

第三点,在 WebDriver 中,我们可以使用 WebElement 类的 send_keys() 来上传附件,比如 element.send_keys(“D:\\test\\uploadfile\\test.jpg”)上文件,但不能使用ActionChains来上传附件,因为type=’file’的输入框并不支持键盘输入。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值