Action接口

本文详细介绍了Selenium中的Action接口,包括行为日志、步骤截图、页面源代码记录、网页frames与多窗口处理、显式等待高级使用等关键数据记录。此外,还讲解了ActionChains的使用,如键盘和鼠标操作,以及如何处理文件上传弹窗、对话框等自动化测试中的复杂场景。通过对Action接口的深入理解和应用,可以提升Web自动化测试的效率和准确性。
摘要由CSDN通过智能技术生成

自动化关键数据记录

关键数据记录

关键数据记录是Web自动化测试中的关键部分,它们提供了关于系统行为和执行过程的详细信息,有助于验证用例的正确性,排查问题和确保应用程序的质量。

行为日志

行为日志是一种用于记录系统或应用程序的操作和事件的技术。它的目的是为了跟踪和记录应用程序的执行过程,以便在需要时审计、故障排查。

行为日志通常包括以下内容: - 时间戳(Timestamp):每个日志记录的时间,记录第个操作或事件发生的确切时间点。 - 操作描述(Action Description):对每个操作或事件的详细描述。例如执行的操作。 - 事件级别(Log Level):表示日志记录的重要性级别。如信息、警告、错误等。 - 相关信息(Additional Information):可以包括与操作或事件相关的其他数据,如参数、输入值等。

步骤截图

步骤截图用于捕捉Web自动化测试测试中的关键执行步骤,以便验证测试用例的正确性和可视化执行过程。

步骤截图包括以下内容: - 屏幕截图(Screen Capture):捕获Web自动化测试执行期间的屏幕图像,包括应用程序界面、当前页面内容和操作后的可视变化。

页面源代码 page source

page source是一个用于捕获当前网页的DOM(文档对象模型)结构的关键数据记录。用于排查元素查找问题、验证页面结构和属性。

page source通常包括以下内容: - HTML结构:整个页面的HTML标记,包括元素、属性和内容。 - CSS样式:与页面关联的CSS样式信息,有助于了解元素的布局。 - 元素属性:每个元素的属性,用于标识和定位元素。 - JavaScript代码:如果页面包含JavaScript,也可以包括JavaScript代码,以便分析页面的交互行为。

行为日志记录

需要先导入logging模块,运行之后,可以看到打印了对应的行为日志。

def test_logging():
    # 实例化driver
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    # 打开百度首页
    driver.get("https://www.baidu.com")
    logging.info("打开百度首页")
    # 输入霍格沃兹测试学院
    driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("霍格沃兹测试学院")
    logging.info("输入霍格沃兹测试学院")
    # 点击搜索
    driver.find_element(By.CSS_SELECTOR, "#su").click()
    logging.info("点击搜索")
    time.sleep(3)
    driver.quit()

步骤截图记录

  • driver.get_screenshot_as_file:用于将当前浏览器窗口的屏幕截图保存为文件。

注意:要先创建好目录。

def test_screenshot():
    # 实例化driver
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    # 打开百度首页
    driver.get("https://www.baidu.com")
    driver.get_screenshot_as_file(f"./screenshot/打开百度首页.png")
    # 输入霍格沃兹测试学院
    driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("霍格沃兹测试学院")
    driver.get_screenshot_as_file(f"./screenshot/输入霍格沃兹测试学院.png")
    # 点击搜索
    driver.find_element(By.CSS_SELECTOR, "#su").click()
    driver.get_screenshot_as_file(f"./screenshot/点击搜索.png")
    time.sleep(3)
    driver.quit()

page source记录

  • driver.page_source:用于获取当前网页的HTML源代码。
def test_page_source():
    # 实例化driver
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    # 打开百度首页
    driver.get("https://www.baidu.com")
    # 打印页面信息
    print(driver.page_source)
    # 输入霍格沃兹测试学院
    driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("霍格沃兹测试学院")
    # 点击搜索
    driver.find_element(By.CSS_SELECTOR, "#su").click()
    time.sleep(3)
    driver.quit()

网页frames与多窗口处理

简介

要定位一个元素时,怎么都定位不到的时候就要考虑是不是浏览器内嵌了一个 frame 窗口或者要找的元素在新打开的窗口里。这时候就需要进行 frame 的切换或者窗口的切换。

frame 类似于在原有主 HTML 的基础上又嵌套一个 HTML,而且嵌套的 HTML 是独立使用的,互不影响。

当打开一个页面时,光标的定位是在主页面中,如果页面是由多个 frame 组成的,那么无法直接定位到具体的元素,需要切换到自己所需要的 frame 中,再查找该元素。

iframe 解析

如图可以看到iframe的标签。

iframe 的多种切换方式

HTML 代码示例:

<iframe src="1.html" id="hogwarts_id" name="hogwarts_name"></iframe>

那么通过传入 id、name、index 以及 Selenium 的 WebElement 对象来切换 frame:

# index:传入整型的参数,从 0 开始,这里的 0 就是第一个 frame
driver.switch_to.frame(0)

#id:iframe 的 id
driver.switch_to.frame("hogwarts_id")

#name: iframe 的 name
driver.switch_to.frame("hogwarts_name")

#WebElement: 传入 `selenium.webelement` 对象
driver.switch_to.frame(driver.find_element(By.TAG_NAME,"iframe"))

iframe 切换回默认页面

在切换页面之后,如果还想操作原页面,则可以使用:

  • Python 版本
driver.switch_to.default_content()

iframe 多层切换

如图所示多层嵌套的 iframe。 从最外部 iframe 切换到 iframe2 则需要层层切换:

driver.switch_to.frame("iframe1")
driver.switch_to.frame("iframe2")

从 iframe2 切换回 iframe1 可以使用父子切换:

# 从 iframe2 切换到上一级 iframe1 
driver.switch_to.parent_frame()
# 从 iframe1 切换到上一级 iframe,如果 iframe 已经是最上级,则保持不变
driver.switch_to.parent_frame()

这个方法是 Selenium 提供的直接从子 frame 切换到父 frame,可以使用在嵌套的 frame 框架中。

显式等待高级使用

在Web自动化测试中,显式等待机制是一种关键的技术,用于等待特定的条件在页面加载、元素渲染或页面跳转等过程中为真(满足条件)后再执行后续操作,以确保测试脚本的可靠性和稳定性。

显式等待原理

在Web自动化测试中,显示等待通过不断轮询等待条件,定期检查条件是否满足,以及设置最大等待时间来实现等待页面元素或事件的机制。这样可以确保测试脚本在页面加载或异步操作完成后再进行交互。

WebDriverWait(driver实例࿰
  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值