selenium之下拉列表,鼠标,键盘操作
selenium之下拉列表,鼠标,键盘操作
selenium当中的元素,有4个基本的操作
- click() —>点击
- send_keys() —->输入文本
- WebElement对象.text —->获取文本内容
- WebElement对象.get_attribute(属性名称) —->获取属性的值
- 详解操作下拉列表
下拉列表操作出现的场景:- select/option
引入Select类: from selenium.webdriver.support.ui import Select
Select类来处理select/option元素
可以通过value,index(下标),text(文本内容)三种方式选择option对应的值。 - ui/li
鼠标悬浮–》选择下拉列表的数据–》ctrl+shift+c 定位
操作流程: - 菜单栏-点击其中的某一链接跳转
- 在下拉列表中选择某一值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# select/option 部分代码
from selenium.webdriver.support.ui import Select
from time import sleep
# 1. 找到select元素对象,实例化Select类。
s = Select(driver.find_element_by_xpath('定位代码'))
# 2. 选择下拉列表的值。
# 2.1 通过value属性值
sleep(2)
s.select_by_value('value的值')
# 2.2 通过index下标
sleep(2)
s.select_by_index(1) # 下标从0开始
# 不同点: iframe 下标从1开始
# 2.3 通过text文本内容
sleep(2)
s.select_by_text('text文本内容')
- select/option
- 详解操作鼠标
主要操作流程:- 引入ActionChains类(from selenium.webdriver.common.action_chains import ActionChains)
- 存储鼠标操作
- perform()来执行鼠标操作 这是逻辑(必须要带着 否则无法执行)
主要的操作方法: - move_to_element() —>鼠标悬浮
- drag_and_drop() —>拖拽
- context_click() —>右键操作
- double_click() —>双击操作
- reset_actions() —>重置
- click_and_hold() —>按着左键,不松开
- click() —>点击
- release() —>释放(这是实现逻辑,就像perform()函数一样)
- send_keys() —>输入操作
- pause() —>暂停
- 滚动—>用js实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22# 前提是: 先找到要操作的元素
# 1. 实例化鼠标类
# 2. 调用各种鼠标行为
# 3. 调用perform()方法去执行鼠标操作
# 悬浮的数据如何定位?如何定位下拉列表的数据?----->
1. 执行过程中: f12-->source-->右侧的暂停的图标(使用的场景:定位捕获异常:比如账号密码输入错误,有短暂的弹出提示)
2. ctrl+shift+c(悬浮元素-》选中下拉的数据 -》ctrl+shift+c -》松开之后,再移动下)
3. 点击悬浮元素->点击下拉数据-->右键-->检查
from selenium.webdriver.common.action_chains import ActionChains
ele = driver.find_element_by_xpath('定位代码')
ActionChains(driver).move_to_element(ele).click(ele).perform() # 这是优化后精简的写法代码(推荐该方法)
# 下一步:等待
# ActionChains(driver).move_to_element(ele).click(ele).perform()代码类似于以下代码:
# ele = driver.find_element_by_xpath('定位代码')
# ac = ActionChains(driver) # 实例化
# ac.move_to_element(ele) # 悬浮
# ac.click() # 点击
# ac.perform() # 执行鼠标操作
- 详解操作键盘
需要引入Key类–》from selenium.webdriver.common.keys import Keys- 组合键
- 全选(ctrl+a):send_keys(Keys.CONTROL,’a’)
- 复制(ctrl+c):send_keys(Keys.CONTROL,’c’)
- 粘粘(ctrl+v):send_keys(Keys.CONTROL,’v’)
- 剪切(ctrl+x):send_keys(Keys.CONTROL,’x’)
- 常用的非组合键
- 回车键:Keys.ENTER
- 删除键:Keys.BACK_SPACE
- 空格键:Keys.SPACE
- 制表键:Keys.TAB
- 回退键:Keys.ESCAPE
- 刷新键:Keys.F5
- js之操作滚动
- 可见/视区域–> 为什么要滚动到可见区域?原因:先滚动到你要操作的元素,让其可见,然后再进行操作。
- 大部分系统在元素操作时,如果元素不在可见区域,随着操作会自动到可见区域 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41from selenium import webdriver
driver = webdriver.Chrome()
ele = driver.find_element_by_xpath('定位代码')
driver.execute_script("arguments[0].scrollIntoView();",ele) # 页面顶端
driver.execute_script("arguments[0].scrollIntoView(false);",ele) # 页面底端
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)") # 移动到页面底部
driver.execute_script("window.scrollTo(document.body.scrollHeight,0)") # 移动到页面顶部
例如:
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
driver = webdriver.Chrome()
driver.implicitly_wait(20)
driver.maximize_window()
driver.get ('https://www.ketangpai.com/User/login.html') # 打开课堂派
# 输入登录账号
driver.find_element_by_xpath("//input[@name='account']").clear()
driver.find_element_by_xpath("//input[@name='account']").send_keys('18871369')
# 输入登录密码
driver.find_element_by_xpath("//input[@name='pass']").clear()
driver.find_element_by_xpath("//input[@name='pass']").send_keys('123456')
# 点击登录按钮
driver.find_element_by_xpath("//div[@class='padding-cont pt-login']//a[@class='btn-btn']").click()
# 点击进入自己的课堂
locator = (By.XPATH,"//a[@data-id='MDAwMDAwMDAwMLOspd2Gz79r']")
WebDriverWait(driver,20).until(EC.visibility_of_element_located(locator))
driver.find_element(*locator).click()
ele = driver.find_element_by_xpath("//a[contains(text(),'2019-04-19')]")
sleep(2)
# driver.execute_script("arguments[0].scrollIntoView();",ele) # 滑动到顶端
driver.execute_script("arguments[0].scrollIntoView(false);",ele) # 滑动到低端
# driver.execute_script("window.scrollTo(0,document.body.scrollHeight)") # 移动到页面底部
# driver.execute_script("window.scrollTo(document.body.scrollHeight,0)") # 移动到页面顶部
sleep(1)
driver.find_element_by_xpath("//div[@data-id='MDAwMDAwMDAwMLSGtZaIub-y']//a[text()='查看成绩']").click()
- 组合键
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 筱茗辰!