zoukankan      html  css  js  c++  java
  • selenium之鼠标键盘操作

    1、鼠标操作

      关于鼠标的操作封装在ActionChains()类里,所以需要提前导入ActionChains()类;perform() 执行所有 ActionChains 中存储的行为(接在ActionChains类之后)

      导入ActionChains 类:from selenium.webdriver import ActionChains

      格式:ActionChains(浏览器).[行为(需要操作的元素)].perform()

      1.1、鼠标右击与双击操作(单击即click())

        右击操作:ActionChains(浏览器).context_click(需要右击的定位好的元素).perform()

        双击:ActionChains(浏览器).double_click(需要右击的定位好的元素).perform()

        代码实例:

    from selenium import webdriver
    from selenium.webdriver import ActionChains
    import time
    # 创建一个浏览器对象
    driver = webdriver.Firefox()
    # 设置浏览器最大化
    driver.maximize_window()
    
    # 右击操作:
    # 访问百度
    url = 'http://www.baidu.com'
    driver.get(url)
    # 定位元素loge元素
    d = driver.find_element_by_css_selector('#s_lg_img')
    # 对元素进行鼠标右击操作
    '''
    ActionChains(driver):使用动作链类对浏览器进行操作
    context_click(d):使用动作链类对定位好的d元素进行右击
    perform():执行动作链类的操作'''
    ActionChains(driver).context_click(d).perform()
    time.sleep(2)
    
    # 双击操作:
    # 定位元素
    ee = driver.find_element_by_link_text('新闻')
    # 双击元素
    ActionChains(driver).double_click(ee).perform()
    time.sleep(2)
    # 关闭浏览器
    driver.quit()

      1.2、鼠标悬停操作

        悬停:ActionChains(driver).move_to_element(元素).perform()

    # 导入相关的模块
    from selenium import webdriver
    from selenium.webdriver import ActionChains
    import time
    # 创建浏览器对象、设为最大化屏幕
    driver = webdriver.Firefox()
    driver.maximize_window()
    # 访问京东
    url = 'https://www.jd.com/'
    driver.get(url)
    
    # 定位需要鼠标悬停单个元素
    xuan = driver.find_element_by_css_selector('li.cate_menu_item:nth-child(1) > a:nth-child(1)')
    # 悬停操作
    ActionChains(driver).move_to_element(xuan).perform()
    time.sleep(3)
    
    # 获取一组悬停的元素,并且一个个遍历
    xuans_list = driver.find_elements_by_css_selector('li.cate_menu_item')
    # 遍历悬停操作
    for el in xuans_list:
        ActionChains(driver).move_to_element(el).perform()
        time.sleep(2)
    
    # 关闭浏览器
    driver.quit()

    2、键盘操作(按键名称需要大写、组合键里的参数需要小写)

      Keys()类提供了键盘上几乎所有按键的方法,原理与鼠标相似;使用键盘操作前需先导入Keys()类,然后配合send_keys()使用

      导入Keys()类:from selenium.webdriver.common.keys import Keys

      格式:元素.send_keys(Keys.键盘名称) 或组合键方式:元素.send_keys(Keys.CONTROL,'x')

    # 导入需要的模块
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import time
    # 创建浏览器对象设置为最大化
    driver = webdriver.Firefox()
    driver.maximize_window()
    # 访问百度
    driver.get('http:www.baidu.com')
    
    # 定位输入框
    srk = driver.find_element_by_id('kw')
    # 输入框输入内容
    srk.send_keys('周润发')
    time.sleep(1)
    # 全选输入框内容
    srk.send_keys(Keys.CONTROL,'a')
    time.sleep(1)
    # 剪切输入框内容
    srk.send_keys(Keys.CONTROL,'x')
    time.sleep(1)
    # 粘贴已经剪切的内容
    srk.send_keys(Keys.CONTROL,'v')
    time.sleep(1)
    # 全选删除内容
    srk.send_keys(Keys.CONTROL,'a')
    time.sleep(1)
    srk.send_keys(Keys.BACK_SPACE)
    time.sleep(1)
    # 重新输入内容
    srk.send_keys('刘德华')
    time.sleep(1)
    # 全选复制输入框内容
    srk.send_keys(Keys.CONTROL,'a')
    time.sleep(1)
    srk.send_keys(Keys.CONTROL,'c')
    time.sleep(1)
    srk.send_keys(Keys.CONTROL,'v')
    time.sleep(1)
    # 使用enter键代替点击搜索动作
    srk.send_keys(Keys.ENTER)
    time.sleep(3)
    # 关闭浏览器 driver.quit()

      键盘操作常用内容:

    • send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
    • send_keys(Keys.SPACE) 空格键(Space)
    • send_keys(Keys.TAB) 制表键(Tab)
    • send_keys(Keys.ESCAPE) 回退键(Esc)
    • send_keys(Keys.ENTER) 回车键(Enter)
    • 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)
    • send_keys(Keys.NUMPAD3) 输入键盘数字3(数字及文中 输入一般直接打字即可,此方法较少用)
    • 。。。。。。。。。。。。。

      各个按键输入都是同一套路,照搬即可

  • 相关阅读:
    bzoj1453
    276D
    855E
    bzoj1458
    树莓派 自启动连接阿里云物联网平台(一)
    树莓派 实现脚本程序自启动
    树莓派4B 系统镜像安装与boot配置
    2019-2020-2《网络对抗技术》 Exp1 PC平台逆向破解
    2019-2020-2 《网络对抗技术》 Exp0 kali 安装
    kali 添加使用 KDE 桌面环境
  • 原文地址:https://www.cnblogs.com/will-wu/p/13476122.html
Copyright © 2011-2022 走看看