【python+selenium的web自动化】- 元素的常用操作详解(二)
2024-08-24 15:47:14
如果想从头学起selenium,可以去看看这个系列的文章哦!
https://www.cnblogs.com/miki-peng/category/1942527.html
本篇主要内容:1.鼠标操作;2.键盘操作;3.下拉框操作;4.js处理
上篇主要内容:1.元素的基本操作;2.等待操作;3.iframe操作;4.alert弹出框 传送门
鼠标操作
selenium的ActionChains类提供了一系列模拟鼠标操作的方法,主要操作流程:1、存储鼠标操作;2、调用perform()
执行鼠标操作,支持的操作部分列举如下:
double_click(ele)
:双击context_click(ele)
:右键drag_and_drop(source, target)
:从某个元素拖拽到某个元素然后松开drag_and_drop_by_offset(source, xoffset, yoffset)
:拖拽元素到某个坐标然后松开move_to_element(ele)
:鼠标悬停在某个元素
下面以百度首页的搜索设置为例,鼠标悬停在【设置】,然后点击显示出来的【搜索设置】:
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# 启动Chromedriver,并与Chromedriver开启会话
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.baidu.com")
# 第一步:实例化ActionChains
ac = ActionChains(driver)
# 第二步:定位要操作的元素
ele = driver.find_element_by_xpath('//span[@id="s-usersetting-top"]')
# 第三步:执行对应的操作
ac.move_to_element(ele) # 悬浮操作
# 第四步,释放鼠标动作
ac.perform()
# 点击悬停出来的页面上的元素
wait = WebDriverWait(driver, 10)
loc = (By.XPATH, '//a[@class="setpref"]')
wait.until(EC.visibility_of_element_located(loc))
driver.find_element(*loc).click()
time.sleep(2)
driver.quit()
这里科普一个知识点,就是链式调用:它可以在一个方法后面接着调用另外的方法,只要它的方法都是返回对象本身即可,如上述的actionchains 用法可以这样写: ActionChains(driver).move_to_element(ele).perform()
用一个简单例子来演示一下ActionChains工作流程的原理:
def move_to():
print("正在移动")
def click():
print('点击')
actions = []
actions.append(move_to)
actions.append(click)
for action in actions: # perform
# action = move_to
action()
键盘操作
selenium提供了比较完整的键盘操作,在使用键盘按键方法前需要先导入keys类:from selenium.webdriver.common.keys import Keys
,它定义了非常多的按键操作,具体的可以问度娘。
常见的一些组合键和非组合键如下:
send_keys(Keys.BACK_SPACE)
删除键send_keys(Keys.SPACE)
空格键-
最新文章
- centos下在线安装mysql
- spring WebSocket详解
- mybatis int 类型判断<;if>;
- jquery导航栏html页面跳转导航字体变色
- java正则表达式四种常用的处理方式是怎么样呢《匹配、分割、代替、获取》
- Bzoj 2749: [HAOI2012]外星人 欧拉函数,数论,线性筛
- centos6.5 设置静态ip地址
- 关于C#中的DateTime类型的技巧
- ansible不配ssh连接,用户密码登录
- hdu_5889_Barricade(最小割+最短路)
- Linux中安装字体
- Java线程sleep,yield,join,wait方法详解
- NPM 安装速度慢,镜像修改
- python 异步发送邮件 aiosmtplib
- Android 系统内核层与 Linux Kernel 的比较
- Replicated Ship 本地 kubernetes 环境试用
- 转:css知多少(12)——目录
- Java 策略模式(Strategy)
- jQueryUI modal dialog does not show close button (x) JQueryUI和BootStrap混用时候,右上角关闭按钮显示不出图标的解决办法
- PCIe简介及引脚定义
热门文章
- Python基础--核心数据类型
- Java15变量竟然没什么区别,八大基本数据类型你知道吗?
- WOJ1022 Competition of Programming 贪心 WOJ1023 Division dp
- bzoj4695 最假女选手(势能线段树/吉司机线段树)题解
- 推荐一个vuepress模板,一键快速搭建文档站
- Windows中VS code无法查看C++ STL容器的值 - 解决方法
- js code review
- js map(Number) All In One
- when I was installing github for windows ,some errors occurred !
- git merge bug