(转)python selenium-webdriver 元素操作之鼠标和键盘事件

Posted 淳_风u云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(转)python selenium-webdriver 元素操作之鼠标和键盘事件相关的知识,希望对你有一定的参考价值。

参考资料:https://blog.csdn.net/zh175578809/article/details/76767748

参考资料2:https://blog.csdn.net/qq_41817302/article/details/79618654

  selenium 提供了比较完整的键盘操作,在使用的模拟键盘操作之前需要我们导入from selenium.webdriver.common.keys import Keys即可,然后就可以来模拟键盘操作。

#导入Keys 模块,然后我们看看Keys 模块定义了那些按键
from selenium.webdriver.common.keys import Keys

一、键盘的操作

导入模块以后,我们可以看看具体的定义按键内容,我已经把经常使用的按键注释标记。

技术分享图片
    NULL = ‘ue000‘
    CANCEL = ‘ue001‘  # ^break
    HELP = ‘ue002‘
    BACKSPACE = ‘ue003‘
    BACK_SPACE = BACKSPACE   #删除键
    TAB = ‘ue004‘   #TAB键
    CLEAR = ‘ue005‘  
    RETURN = ‘ue006‘
    ENTER = ‘ue007‘   #回车键
    SHIFT = ‘ue008‘   #Shift键
    LEFT_SHIFT = SHIFT
    CONTROL = ‘ue009‘
    LEFT_CONTROL = CONTROL   #Ctrl 键
    ALT = ‘ue00a‘           #Alt 键
    LEFT_ALT = ALT
    PAUSE = ‘ue00b‘
    ESCAPE = ‘ue00c‘   #ECS键
    SPACE = ‘ue00d‘    #空格键 
    PAGE_UP = ‘ue00e‘   #PgUp 键
    PAGE_DOWN = ‘ue00f‘ #PgDwon 键
    END = ‘ue010‘    #END 键
    HOME = ‘ue011‘   #HOME 键
    LEFT = ‘ue012‘  #左键
    ARROW_LEFT = LEFT  
    UP = ‘ue013‘    #上键
    ARROW_UP = UP   
    RIGHT = ‘ue014‘
    ARROW_RIGHT = RIGHT  #右键
    DOWN = ‘ue015‘      #下键
    ARROW_DOWN = DOWN  
    INSERT = ‘ue016‘    #insert键 
    DELETE = ‘ue017‘    #del键

    SEMICOLON = ‘ue018‘  #‘;‘键
    EQUALS = ‘ue019‘     #‘=‘键
  #数字键盘
    NUMPAD0 = ‘ue01a‘  # number pad keys
    NUMPAD1 = ‘ue01b‘
    NUMPAD2 = ‘ue01c‘
    NUMPAD3 = ‘ue01d‘
    NUMPAD4 = ‘ue01e‘
    NUMPAD5 = ‘ue01f‘
    NUMPAD6 = ‘ue020‘
    NUMPAD7 = ‘ue021‘
    NUMPAD8 = ‘ue022‘
    NUMPAD9 = ‘ue023‘
    MULTIPLY = ‘ue024‘ # ‘*‘ 键
    ADD = ‘ue025‘   # ‘+‘ 键
    SEPARATOR = ‘ue026‘  #‘,‘键
    SUBTRACT = ‘ue027‘  # ‘-‘ 键
    DECIMAL = ‘ue028‘   # ‘.‘键
    DIVIDE = ‘ue029‘    #‘/‘键

    F1 = ‘ue031‘  # function  keys
    F2 = ‘ue032‘
    F3 = ‘ue033‘
    F4 = ‘ue034‘
    F5 = ‘ue035‘
    F6 = ‘ue036‘
    F7 = ‘ue037‘
    F8 = ‘ue038‘
    F9 = ‘ue039‘
    F10 = ‘ue03a‘
    F11 = ‘ue03b‘
    F12 = ‘ue03c‘

    META = ‘ue03d‘
    COMMAND = ‘ue03d‘
技术分享图片

看到模块中包含了很多的按键但是真正实际使用的按键不多,所以我下面对按键的操作将一些方法介绍一下,就不会对所有的按键详细介绍。

1.首先我们了解下组合键,什么是组合键,比如我们经常使用的Ctrl + A ,Ctrl + C 等都是组合键。我们先看个例子

在使用按键操作的时候我们需要借助一下send_keys()来模拟操作,Keys.CONTROL 也就是我们键盘上的Ctrl键,下面是几个常用的组合键。

send_keys(Keys.CONTROL,‘a‘)   #全选(Ctrl+A)

send_keys(Keys.CONTROL,‘c‘)   #复制(Ctrl+C)

send_keys(Keys.CONTROL,‘x‘)   #剪切(Ctrl+X)

send_keys(Keys.CONTROL,‘v‘)   #粘贴(Ctrl+V)

我们下面使用Ctrl + A 来编写一个实例,看一下组合键的使用。

技术分享图片
#-*- coding:utf-8 -*-
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_id(‘kw‘).send_keys(‘AAAAAAAAAAAA‘)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,‘a‘)  #注意这里组合键的输入。
time.sleep(10)
driver.quit()
技术分享图片

2.下面常用的键,这些常用键主要是非组合键,直接输入即可。

  • 回车键 Keys.ENTER
  • 删除键 Keys.BACK_SPACE
  • 空格键 Keys.SPACE
  • 制表键 Keys.TAB
  • 回退键 Keys.ESCAPE
  • 刷新键 Keys.F5

下面我们选择一个常用的键,来编写一个例子,使用回车键来代替鼠标的click()键

技术分享图片
#-*- coding:utf-8 -*-
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://cn.bing.com/")
driver.find_element_by_id(‘sb_form_q‘).send_keys(‘selenium‘)
driver.find_element_by_id("sb_form_go").send_keys(Keys.ENTER)   #通过回车键来代替鼠标的左键
driver.quit()
技术分享图片

二、鼠标的操作

前面的例子中,点击事件都是通过click()方法实现鼠标的点击事件。其实在WebDriver中,提供了许多鼠标操作的方法,这些操作方法都封装在ActionChains类中,包括鼠标右击、双击、悬停和鼠标拖动等功能。

ActionChains类提供的鼠标操作事件

context_click():点击鼠标右键

double_click():双击鼠标

drag_and_drop():拖动鼠标

move_to_element():鼠标悬停

鼠标悬停

页面上有些下拉菜单,在鼠标放到元素上以后,下面的菜单才会显示出来。下面的图片就是一个例子

 

百度首页上的设置项,下面的菜单默认不会显示,将鼠标停在上面后才会显示,这就是鼠标的悬停操作,菜单显示以后就可以对下面的项进行点击操作

进入搜索设置的代码

# -*- coding: utf-8 -*-

from selenium import webdriver
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()方法将鼠标悬停在设置上,然后找到搜索设置项

鼠标的右击、双击和拖动事件都是通过上述的方法调用,只要将方法替换一下就可以了。拖动事件需要传入两个参数,第一个参数是拖动的起点元素,第二个参数是终点元素

webdriver.ActionChains(driver).context_click("右击的元素定位").perform() #右击事件
webdriver.ActionChains(driver).double_click("双击的元素定位").perform() #双击事件
webdriver.ActionChains(driver).drag_and_drop("拖动的起点元素", "拖动的终点元素").perform() #拖动事件

 













以上是关于(转)python selenium-webdriver 元素操作之鼠标和键盘事件的主要内容,如果未能解决你的问题,请参考以下文章

Selenium + Chrome带配置项启动

python json转html

python 字符串转 json

python 图像转矩阵,矩阵转图像

python的图片转字符

Python实现PDF 转txt 和html转txt