自动化测试-web(弹窗/滚动条/鼠标/等待等操作)
时间:2024-04-13 11:40:39 来源:网络cs 作者:纳雷武 栏目:卖家故事 阅读:
一、弹窗
为什么要处理弹窗?
如果页面操作过程中,有弹窗出现,不处理,无法继续对页面操作。
弹窗类型:
js原生弹窗: 警告框、输入框、提示框,这些必须处理
如何处理:
1)获取弹窗对象
2)点击同意或取消方法
alert 弹窗:只有信息及确认按钮
confirm弹窗:在alert弹窗基础上增加了取消按钮
prompt 弹窗: 在confirm基础上增加了可以输入文本
示例:
driver.switch_to.alert.accept() # 确定同意,三种弹窗都可以使用driver.switch_to.alert.dismiss()# 取消不同意,confirm 和 prompt弹窗中使用title = driver.switch_to.alert.text #打印弹窗信息alert = driver.switch_to.alert # 获取alert对象alert.send_keys() #prompt 弹窗中输入内容
二、滚动条
1. 定义js语句
2. 调用执行js方法
from selenium import webdriverfrom time import sleepdriver = webdriver.Chrome("/usr/local/bin/chromedriver")driver.get("https://www.hao123.com/")driver.maximize_window()sleep(5)# 向下js_down = "window.scrollTo(0,document.body.scrollHeight)"# js_down = "window.scrollTo(0,1000)"# 执行js方法driver.execute_script(js_down)sleep(5)# 向上js_top = "window.scrollTo(0,0)"# 执行js方法driver.execute_script(js_top)sleep(5)driver.quit()
三、鼠标操作
导包:
from selenium.webdriver import ActionChains
实例化鼠标对象:
action = ActionChains(driver)
调用鼠标方法:
action.move_to_element(elementxx) 鼠标悬停action.context_click(elementxx) 鼠标右击action.double_click(elementxx) 鼠标双击action.drag_and_drop(source,target) 拖拽执行鼠标操作:
action.perform() 调用鼠标方法并不会去执行鼠标操作,必须调用perform才会执行
driver = webdriver.Chrome("/usr/local/bin/chromedriver")driver.get("https://www.baidu.com")driver.maximize_window()sleep(5)# 实例化鼠标对象action = ActionChains(driver)na = driver.find_element_by_xpath('//*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]')# 鼠标右击action.context_click(na).perform()sleep(5)driver.quit()
四、等待
什么是等待?
代码执行过程中,第一次未找到元素,先不抛出异常。 激活等待时间,在等待过程中如果找到元素就执行。
为什么要等待?
由于网络或配置与原因,导致元素未加载出来,而代码已执行,会触发异常
元素等待类型:
1、隐式等待
说明:针对全部元素生效
方法:driver.implicitly_wait(x秒)
提示:项目中,如果未封装自动化框架时,推荐使用
2、显式等待
说明:针对单个元素生效,可以修改查找频率和超时时间
特点:查找并返回元素
用法:
from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium import webdriverdriver = webdriver.Chrome("/usr/local/bin/chromedriver")# 显示等待 -> 返回查找到的元素el = WebDriverWait(driver,10,0.5).until(lambda x:x.find_element(By.CSS_SELECTOR,"#userAA"))el.send_keys("admin")
3、强制等待
语法: sleep(10)
提示: 执行到这句必须等待10秒
from time import sleepsleep(5)
五、frame框架
frame 标签作用: 在页面中加载另一个页面
为什么要处理iframe?
焦点默认在启动页面,如果不处理iframe,无法操作iframe嵌入的页面元素
如何处理?
切换到iframe: driver.switch_to.frame(iframe元素)操作元素回到默认页面:driver.switch_to.default_content()六、切换多窗口
为什么要切换?
selenium 默认启动时,所有的焦点都在启动窗口,那么意味着无法操作其他窗口的标签
如何切换?
获取窗口句柄: driver.window_handles
使用句柄切换窗口: driver.switch_to.window(handle)
句柄:窗口的唯一标识符
多窗口之间切换工具封装:
如果定位不到元素该怎么办?
元素定位代码是否正确是否匹配到唯一元素是否有元素等待是否需要鼠标悬浮元素是否在新窗口元素是否存在于iframe标签中七、截图
为什么要截图?
出错后,方便查看错误的原因
如果截图?
driver.get_screenshot_as_file("xxx.png")
图片命名添加时间戳
driver.get_screenshot_as_file("error_{}.png".format(time.strftime("%Y_%m_%d %H_%M_%S")))
八、cookie
说明:由服务器生成,存储在客户端的登录凭证
使用:
获取cookie: driver.get_cookies()
添加cookie: driver.add_cookie(data)
阅读本书更多章节>>>>本文链接:https://www.kjpai.cn/gushi/2024-04-13/158009.html,文章来源:网络cs,作者:纳雷武,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!
下一篇:返回列表