当前位置: 首页 > news >正文

07-操作元素(键盘和鼠标事件)

        在前面的文章中重点介绍了一些元素的定位方法,定位到元素后,就需要操作元素了。本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件。

一、简单操作

  • 点击按钮(鼠标左键):click()
  • 清空输入框:clear()
  • 输入字符串:send_keys('xxx')
  • 获取属性值:get_attribute(attr)
  • 获取标签中的文本内容:text
  • 判断元素是否显示出来:is_displayed()
  • 窗口最大化:driver.maximize_window()
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.baidu.com")print(driver.find_element('xpath', '//*[@id="s-top-left"]/a[2]').text)
driver.find_element("id", "kw").clear()
driver.find_element("id", "kw").send_keys('selenium')
driver.find_element("id", "su").click()
print(driver.find_element("id", "kw").get_attribute("value"))
print(driver.find_element("id", "kw").is_displayed())driver.quit()

二、submit提交表单

        在百度搜索框输入关键字后,可以直接按回车键搜索,也可以点搜索按钮搜索。submit()一般用于模拟回车键。

from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.baidu.com")driver.find_element("id", "kw").clear()
driver.find_element("id", "kw").send_keys('selenium')
driver.find_element("id", "kw").submit()

三、键盘操作

1)模拟键盘enter键

        键盘操作需要先导入如下模块:from selenium.webdriver.common.keys import Keys,然后使用send_keys(Keys.ENTER)模拟enter键。

from selenium import webdriver
from selenium.webdriver.common.keys import Keysdriver = webdriver.Chrome()
driver.get("https://www.baidu.com")driver.find_element("id", "kw").clear()
driver.find_element("id", "kw").send_keys('selenium')
# 模拟键盘enter键
driver.find_element("id", "kw").send_keys(Keys.ENTER)driver.quit()
2)其他常见的键盘操作
  • 键盘F1到F12:send_keys(Keys.F1),把F1改成对应的快捷键。
  • 复制Ctrl+C:send_keys(Keys.CONTROL, 'c') 
  • 粘贴Ctrl+V:send_keys(Keys.CONTROL, 'v') 
  • 全选Ctrl+A:send_keys(Keys.CONTROL, 'a') 
  • 剪切Ctrl+X:send_keys(Keys.CONTROL, 'x') 
  • 制表键Tab:  send_keys(Keys.TAB) 

四、鼠标操作

        鼠标不仅可以点击(click),还可执行其他操作,比如:将鼠标悬停在某个元素上、鼠标右击等。

1)鼠标悬停操作

        鼠标操作需要先导入如下模块:from selenium.webdriver.common.action_chains import ActionChains,然后使用move_to_element()实现鼠标悬停,最后使用perform()执行ActionChains中所有行为。这里以百度页面设置按钮为例。

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChainsdriver = webdriver.Chrome()
driver.get("https://www.baidu.com")ele = driver.find_element('xpath', '//*[@id="s-usersetting-top"]')
ActionChains(driver).move_to_element(ele).perform()driver.quit()
2)鼠标其他操作
  • 右击鼠标:context_click()
  • 双击鼠标:double_click()

五、定位悬浮菜单

        通过ajax获取的下拉菜单中的元素对象也可以进行定位,比如百度搜素提示:

from selenium import webdriver
import timedriver = webdriver.Chrome()
driver.get('https://www.baidu.com')driver.find_element('id', 'kw').send_keys('py')
time.sleep(1)
# 定位悬浮菜单
menus = driver.find_elements('css selector', '.bdsug-overflow.c-line-clamp1')for i in menus:print(i.text)menus[3].click()

相关文章:

  • 下载安装nvm,使用nvm管理node.js版本
  • Kotlin 函数式接口
  • Leetcode:无重复字符的最长子串
  • 数据结构-堆排序问题
  • Android 按上/下键,焦点会移动到第一个控件上面或最后一个控件下面的解决办法
  • VirtualBox7.x下载安装CentOS7安装网络配置
  • AI盒子在智慧加油站的应用
  • 数据结构学习笔记
  • 代码随想录算法训练营第36期DAY45
  • 自然语言处理中的BERT模型深度剖析
  • 基于 Apache Doris 的实时/离线一体化架构,赋能中国联通 5G 全连接工厂解决方案
  • 31-ESP32-S3-WIFI篇-02 Event Group (事件标记组)
  • c语言是编程软件还是编程语言?深入解析C语言的本质与定位
  • 【C语言】基于C语言实现的贪吃蛇游戏
  • 【VSCode】快捷方式log去掉分号
  • canvas 高仿 Apple Watch 表盘
  • ES10 特性的完整指南
  • Flannel解读
  • gcc介绍及安装
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • swift基础之_对象 实例方法 对象方法。
  • Terraform入门 - 1. 安装Terraform
  • webgl (原生)基础入门指南【一】
  • 成为一名优秀的Developer的书单
  • 基于HAProxy的高性能缓存服务器nuster
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 时间复杂度与空间复杂度分析
  • 数据可视化之 Sankey 桑基图的实现
  • 思维导图—你不知道的JavaScript中卷
  • 鱼骨图 - 如何绘制?
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 正则与JS中的正则
  • ionic异常记录
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​Spring Boot 分片上传文件
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​如何使用QGIS制作三维建筑
  • (1)无线电失控保护(二)
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)德国人的记事本
  • (转)人的集合论——移山之道
  • .NET Core中的时区转换问题
  • .NET中使用Redis (二)
  • @antv/g6 业务场景:流程图
  • @EnableWebMvc介绍和使用详细demo
  • [<死锁专题>]
  • [000-01-022].第03节:RabbitMQ环境搭建