Selenium selenium 常见元素/控件操作

周小丽 · 2022年10月20日 · 最后由 fiskeryang 回复于 2022年10月22日 · 4668 次阅读

整合同事的分享

一、元素属性及元素操作方法

1、text 获取元素的文本; 如:driver.text
2、size 获取元素的大小: 如:driver.size
3、get_attribute 获取元素属性值;如:driver.get_attribute("id") ,传递的参数是元素的属性名
4、is_displayed 判断元素是否可见 如:element.is_displayed()
5、is_enabled 判断元素是否可用 如:element.is_enabled()
6、is_selected 判断元素是否被选中 如:element.is_selected()
7、.send_keys() # 输入方法
8、.click() # 点击方法
9、.clear() # 清空方法

二、浏览器操作方法

1、driver.maximize_window() # 最大化浏览器
2、driver.set_window_size(w,h) # 设置浏览器大小 单位像素
3、driver.set_window_position(x,y) # 设置浏览器位置
4、driver.back() # 后退操作
5、driver.forward() # 前进操作
6、driver.refrensh() # 刷新操作
7、driver.close() # 关闭当前主窗口(主窗口:默认启动那个界面,就是主窗口)
8、driver.quit() # 关闭 driver 对象启动的全部页面
9、driver.title # 获取当前页面 title 信息
10、driver.current_url # 获取当前页面 url 信息
11、driver.maximize_windows() # 窗口最大化
12、driver.set_window_size(w,h) # 设置浏览器大小
13、driver.set_window_position(x,y) # 设置浏览器窗口位置

三、鼠标操作(需要实例化鼠标对象)

导包:
from selenium.webdriver.common.action_chains import ActionChains
鼠标事件常用的操作 ☆
1、context_click(element) # 右击
2、double_click(element) # 双击
3、double_and_drop(source, target) # 拖拽
4、move_to_element(element) # 悬停【重点】
5、perform() # 执行以上事件的方法【重点】

# 实例化鼠标
action = ActionChains(driver)
# 鼠标拖拽
action.drag_and_drop(red, blue)
# 鼠标执行
action.perform()

四、键盘操作

1说明键盘对应的方法在Keys类中
# 导包
from selenium.webdriver.common.keys import Keys
# 单键
element.send_keys(Keys.XXX)
# 组合键
element.send_keys(Keys.XXX, 'a') # 注意这里的组合键都是小写

2快捷键这里只讲windows操作系统的快捷键):
 CONTROL: Ctrl键
 BACK_SPACE : 等价于 BACKSPACE 删除

ele.send_keys('baidu')
ele.send_keys(Keys.BACK_SPACE)  # 删除
# 组合键 Ctrl + a 全选 ,注意这里的组合键都是小写
ele.send_keys(Keys.CONTROL, 'a')
ele.send_keys(Keys.CONTROL, 'x')
ele.send_keys(Keys.CONTROL, 'v')

五、下拉框(需要实例化下拉框)

1、使用 Select 类
​ 1)、导包:from selenium.webdriver.support.select improt Select
​ 2)、实例化下拉框:s = Select(element)
​ 3)、调用方法:s.select_by_index() 索引从 0 开始

2、Select 类提供的方法
​ 1)、select_by_index() # 通过索引定位
​ 2)、select _by_value() # 通过 value 值
​ 3)、select_by_visible_text() # 显示文本

六、弹出框

1、弹窗分类
​ 系统弹窗:JS 实现
​ 自定义弹窗:前端代码封装

2、对话框的分类:
​ alert:警告框
​ confirm:确认框
​ prompt:提示框

3、步骤:
1)、需要切换到对话框
driver.switch_to.alert
2)、处理对话框
alert.text # 获取文本
alert.accept() # 接受
alert.dismiss() # 拒接

七、滚动条

1、准备 js 代码
js_down = "window.scrollTo(0, 1000)"
2、执行 js 代码
driver.execute_script(js_down)

八、切换 frame 表单

1、应用场景:
处于 frame 中的元素,虽然可以获取元素信息,但是代码执行时无法定位元素,因此需要先切换到 frame,再进行元素定位操作。

2、如何切换 frame
方法:driver.switch_to.frame("id/name/element") 传入的是代表 frame 唯一的特征值

3、如果要连续切换 frame 必须要先回到默认页面,才能够实现下一个 frame 的切换
回到主页面的方法:driver.switch_to.default_content()

九、多窗口的切换

1、获取当前的句柄值
print("当前的句柄值是:", driver.current_window_handle)
2、切换窗口操作,driver.window_handles 获取 driver 启动的所有窗口句柄
handles = driver.window_handles
3、切换窗口工作
driver.switch_to.window(handles[-1])

十、通过 cookie 绕过验证码

1、整理 cookie 信息为字典数据,对应的是 name 和 value,保存的一个变量中
cookie_value = {'name':'BDUSS', 'value':'afgfsgdhd'}
2、调用方法添加 cookie
driver.add_cookie(cookie_value)
3、刷新页面 -->发送 cookie 给服务器验证
driver.refresh()

共收到 8 条回复 时间 点赞

第十点好使吗,这个 cookie 是一直固定的?

西学东渐 回复

里面的参数不会写死

西学东渐 回复

这个 cookie 一般有时效,时间到了就过期了

西学东渐 回复

让开发给个长期的 cookie

cookie 在实际一直没用到,不知道咋样。也没遇到下拉用 select

你们有遇到过那个失焦就会隐藏的代码吗,那种你们是怎么定位的

青琅玕 回复

响应式框架这种问题常见 一般都是下拉表一类的控件 可以自己分析 Dom 树找到对应的元素位置

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册