自动化测试-web(弹窗/滚动条/鼠标/等待等操作)

一、弹窗

为什么要处理弹窗?

如果页面操作过程中,有弹窗出现,不处理,无法继续对页面操作。

弹窗类型:

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 webdriver
    from time import sleep

    driver = 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 By
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver

driver = 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 sleep
sleep(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)

相关推荐
互联网杂货铺13 小时前
自动化测试基础知识总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
懒笑翻17 小时前
Python 使用 Selenuim进行自动化点击入门,谷歌驱动,以百度为例
运维·selenium·自动化
qq_433716951 天前
Selenium+Pytest自动化测试框架 ------ 禅道实战
自动化测试·软件测试·selenium·单元测试·pytest·接口测试·压力测试
LucianaiB2 天前
丹摩|丹摩助力selenium实现大麦网抢票
selenium·测试工具
HKJ_numb12 天前
软件测试 —— 自动化基础
软件测试·selenium·测试工具·自动化
??? Meggie2 天前
【Python】selenium获取定位元素大小、电脑屏幕的像素、屏幕尺寸信息、以及网页尺寸的方法
开发语言·python·selenium
兆。2 天前
Selenium 使用指南:从基础到反爬虫的实践
爬虫·python·selenium·测试工具
_Soy_Milk6 天前
动态网页爬取 —— ajax 与 selenium
selenium·ajax·okhttp
江_小_白6 天前
关于selenium元素找不到的问题(Unable to locate element: {“method“:“xpath“,“selector“:“)
selenium·测试工具
无所事事的海绵宝宝6 天前
selenium元素定位校验以及遇到的元素操作问题记录
python·功能测试·selenium·测试工具