导包
from selenium.webdriver import ActionChains
实例化鼠标对象
action = ActionChains(driver)
调用鼠标方法
#鼠标右击
action.context_click()
#鼠标双击
action.double_click()
#鼠标拖拽,例如登录时经常用到将元素拖到到指定位置进行验证,soure:表示被拖动元素对象
#,target表示目标元素
action.drag_and_drop(soure,target)
#悬浮操作,element表示悬浮的元素对象
action.move_to_element(element)
注意点:调用鼠标方法,还不会执行鼠标操作,只是将需要进行的操作指令存储到action鼠标对象内
执行鼠标操作
#执行鼠标操作
#执行perform()方法后才会执行鼠标操作
#注意:在执行鼠标操作脚本时不能手工移动鼠标
action.perform()
from selenium.webdriver.common.keys import Keys
执行键盘操作方法
#Keys类封装了除了26个字母和数字键以外的所有键符 #调用send_keys方法,直接调用Keys里面指定键符做为参数来执行键盘操作 #1.单个按键操作 element.send_keys(Keys.BACK_SPACE) #删除键 element.send_keys(Keys.SPACE) #空格键 #2.组合按键操作 element.send_keys(Keys.CTRL,‘a‘) #选中 element.send_keys(Keys.CTRL,‘c‘) #复制
隐示等待
#方法,timeout表示的最大超时时长,单位秒 driver.implicitly_wait(timeout) """ 特点: 1.全局只需要设置一次 2.作用于所有元素定位 3.未找到元素抛出异常:NoSuchElementException """
显示等待
#导包 from selenium.webdriver.support.wait import WebdriverWait #使用方法 #1.timeout:表示超时时间 #2.poll_frequency:表示间隔时间,默认为0.5s #3.util:直到...时,下面表示直到找到id为userA的元素时 WebDriverWait(driver,timeout,poll_frequency).util(lambda x:x.find_element_by_id(‘userA‘)) """ 特点: 1.针对单个元素生效 2.封装在WedDriverWait类中,需要导包 3.未找到元素抛出异常:TimeOutException """
导包
实例化下拉框对象
执行下拉框选中的操作
from selenium.webdriver.support.select import Select #element为html内所要操作的<select>下拉框标签元素 select = Select(element) #通过索引选择对应选项 #注意:index从0开始计数 select.select_by_index(index) #通过选项元素的value值选择对应选项 select.select_by_value(value) #通过选项元素的文本信息选择对应选项 select.select_by_visiable_text(text)
<!--alert 警告框:包含确定按钮和提示信息 -->
<input type=“button” onclick=“alert(‘我是警告框’)” value="alert"/>
<!--confirm 确认框:包含确认按钮和取消按钮和提示信息-->
<input type=“button” onclick=“confirm(‘我是确认框’)” value="confirm"/>
<!--prompt 提示框:包含确认按钮和取消按钮、提示信息以及信息输入框-->
<input type=“button” onclick=“prompt(‘我是提示框’)” value="prompt"/>
弹出框处理方法
#获取弹出框对象
alert = driver.switch_to.alert
#调用弹出框对象方法
#返回弹出框信息
alert.text
#接受对话框
alert.accept()
#取消度画框
alert.dissmiss()
?
"""
注意:
1.上面的处理方法对:alert/confirm/prompt三种弹出框通用
2.alert没有取消按钮,但alert.dissmiss()对其同样生效
"""
#1.使用js的方法控制滚动条
js = "window.scrollTo(0,1000)"
#2.selenium执行JavaScript脚本
driver.execute_script(js)
?
"""
注意:
1.selenium本身没有提供直接操作滚动条的方法,但是js可以控制滚动条操作
2.selenium提供了执行js的方法
"""
frame:Html页面中的一种框架,主要作用是在当前页面中指定区域显示另外一个页面
frame切换处理方法
#切换frame,frame_reference表示可定位对应frame框架标签的属性:id、name等
driver.switch_to.frame(frame_reference)
#回到默认页面
driver.switch_to.default_content()
"""
在frame中操作其他页面,必须先返回到默认页面才能进行其他操作
"""
句柄:handle,页面窗口唯一识别码
切换窗口方法
#获取页面当前句柄
driver.current_window_handle
#获取所有页面句柄
driver.window_handles
"""
注意:获取所有句柄信息返回的一组句柄信息,排序根据页面窗口打开的顺序排序,获取指定的页面句柄添加
对应的索引即可
"""
#跳转指定页面
driver.switch_to.window(handle)
窗口截图
#直接调用selenium中的方法即可,imgpath为存放路径
driver.get_screenshot_as_path(imgpath)
#处理图片重复方法,只需要参数化文件名称即可
imgpath = time.strf(‘%Y%m%D%-%H%M%S%‘){}.test.png
?
"""
注意:
1.图片存放路径必须先创建好,get_screenshot_as_path()方法不自动化创建路径
2.图片格式必须为png
"""
处理验证码的几种方式
去掉验证码
设置万能验证码
验证码识别技术
记录cookie
cookie概念
是由web服务器生成的,并且保存在用户浏览器上的小文本文件,包含了用户的相关的信息
数据格式:键值对组成,对应python的字典
cookie处理方法
#获取cookie的方法,name为cookie的名称
driver.get_cookie(name)
#获取网站上所有cookie信息
driver.get_cookies()
#添加cookie
driver.add_cookie(cookie_dict)
?
"""
注意:
1.cookie_dict必须为字典格式
2.必须包含“name”和“value”键
"""
web自动化02-鼠标操作-键盘操作-元素等待-下拉选择框-弹出框
原文:https://www.cnblogs.com/snailon/p/11165115.html