Selenium自动化测试-页面的常见操作(九)

除了页面元素本身的点击,输入,浏览器的操作等事件,我们还会涉及到鼠标,键盘等一系列的操作。那么这么动作怎么实现呢?仔细看好了,这里也会把这些汇总起来。还是以百度为例

三,操作鼠标事件的api,首先要知道关于鼠标操作的方法封装在ActionChains类提供,那么要先导入这个类

特别说明的是大家可以发现,每个鼠标动作后面都有个perform(),这个的意思是:执行ActionChains类中存储的所有动作,也可以理解为对动作的提交,也就是说真正的执行该动作。

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

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
el_input = driver.find_element_by_id("kw")
el_shezhi = driver.find_element_by_name("tj_settingicon")
el_input.send_keys("selenium")
el_btn = driver.find_element_by_id("su")
#鼠标单击
ActionChains(driver).click(el_btn).perform()
#右击
ActionChains(driver).context_click(el_btn).perform()
#双击
ActionChains(driver).double_click(el_btn).perform()
#拖动
ActionChains(driver).drag_and_drop(el_btn).perform()
#鼠标悬停
ActionChains(driver).move_to_element(el_shezhi).perform()

四,键盘操作事件,键盘上辣么多的键,怎么操作了,请看代码,有三种方式实现

(1)通过Keys类实现,引入包:from selenium.webdriver.common.keys import Keys

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
el_input = driver.find_element_by_id("kw")
el_input.send_keys("fsafsaf")
#删除键(BackSpace)
el_input.send_keys(Keys.BACK_SPACE)
#空格键(Space)
el_input.send_keys(Keys.SPACE)
#制表键(Tab)
el_input.send_keys(Keys.TAB)
#回退键(Esc)
el_input.send_keys(Keys.ESCAPE)
#回车键(Enter)
el_input.send_keys(Keys.ENTER)
#全选(Ctrl+A)
el_input.send_keys(Keys.CONTROL,'a')
#复制(Ctrl+C)
el_input.send_keys(Keys.CONTROL,'c')
#剪切(Ctrl+X)
el_input.send_keys(Keys.CONTROL,'x')
#粘贴(Ctrl+V)
el_input.send_keys(Keys.CONTROL,'v')
#键盘 F1
el_input.send_keys(Keys.F1)
#键盘 F12
el_input.send_keys(Keys.F12)

(2)通过key_down()(按下键盘),send_keys,key_up()(释放键盘)

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
el_input = driver.find_element_by_id("kw")
el_input.send_keys("selenium")
#全选
ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
#剪切
ActionChains(driver).key_down(Keys.CONTROL).send_keys('x').key_up(Keys.CONTROL).perform()
driver.get("http://www.baidu.com")
el_input = driver.find_element_by_id("kw").click()
#粘贴
ActionChains(driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()

3.通过第三方的模块来实现,需要安装pywin32模块:pip install pywin32

import win32api
import win32con

class KeyboardKeys(object):
    #模拟键盘按键类
    VK_CODE={
        'enter':0x0D,
        'ctrl':0x11,
        'v':0x56
    }

    @staticmethod
    def keyDown(keyName):
        #按下按键
        win32api.keybd_event(KeyboardKeys.VK_CODE[keyName],0,0,0)


    @staticmethod
    def keyUp(keyName):
        #释放按键
        win32api.keybd_event(KeyboardKeys.VK_CODE[keyName],0,win32con.KEYEVENTF_KEYUP,0)


    @staticmethod
    def oneKey(key):
        #模拟单个按键
        KeyboardKeys.keyDown(key)
        KeyboardKeys.keyUp(key)

    @staticmethod
    def twoKeys(key1,key2):
        #模拟两个组合键
        KeyboardKeys.keyDown(key1)
        KeyboardKeys.keyDown(key2)
        KeyboardKeys.keyUp(key2)
        KeyboardKeys.keyUp(key1)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值