Selenium WebDriver测试举例 -- Antd DragSortTable

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读2.7k次,点赞85次,收藏12次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502在Web应用中,可拖拽列表组件提供了极佳的用户体验,允许用户通过拖放操作来重新排序列表项。Ant Design (Antd) 是一个流行的React UI库,它提供了一个功能丰富的可拖拽列表组件:DragSortTable。本文将演示如何使用Selenium WebDriver对Antd Pro的DragSortTable组件进行自动化测试,确保其拖拽功能按预期工作。

测试目标 🎯

测试Antd的DragSortTable组件时,我们的目标是验证是否可以通过拖拽操作来改变列表项的顺序。具体来说,我们将执行以下步骤:

  1. 定位到可拖拽的列表项。
  2. 执行拖拽操作,改变列表项的顺序。
  3. 验证列表项的顺序是否已按照拖拽后的顺序进行了更新。

测试环境准备 🛠️

  1. 安装Selenium:确保已安装Selenium库。

    pip install selenium
  2. 下载WebDriver:根据你使用的浏览器类型(如Chrome、Firefox等),从相应的官方网站下载WebDriver。

  3. 运行Antd Pro项目:确保你有一个运行中的Antd Pro项目,且其中包含DragSortTable组件。

编写测试脚本 📝

接下来,我们将编写一个Selenium测试脚本,模拟用户拖拽列表项的操作。

步骤 1: 初始化WebDriver

首先,我们需要创建一个WebDriver实例,并打开Antd Pro的DragSortTable组件所在的页面。

from selenium import webdriver

driver = webdriver.Chrome()  # 或使用其他浏览器
driver.get("http://localhost:8000/path/to/drag-sort-table")  # Antd Pro拖拽列表页面的URL

步骤 2: 定位可拖拽的列表项

使用Selenium的定位功能找到我们想要拖拽的列表项。通常,可拖拽的列表项会有一个特定的类名或ID。

from selenium.webdriver.common.action_chains import ActionChains

# 假设第一个和第二个列表项的选择器为.item-0和.item-1
source_element = driver.find_element_by_css_selector(".item-0")
target_element = driver.find_element_by_css_selector(".item-1")

步骤 3: 执行拖拽操作

使用ActionChains模拟拖拽操作。

actions = ActionChains(driver)
actions.drag_and_drop(source_element, target_element).perform()

一般来说,拖拽完成之后,前端会发送一个post请求将最新顺序上报给后端,而后端会返回排序之后的新的列表数据。这就要求使用Selenium WebDriver检测HTTP请求。因此,在自动化测试中,除了验证UI的变化,有时还需要验证后台是否正确处理了这些操作。不过,直接通过Selenium WebDriver检测HTTP请求较为复杂,因为WebDriver主要关注于浏览器端的行为模拟和状态检测。为了实现这一需求,我们可以采用以下方法:

方法:使用浏览器开发者工具API(推荐Chrome DevTools Protocol)

某些浏览器,如Chrome,提供了一套开发者工具API(Chrome DevTools Protocol,简称CDP),允许我们检测浏览器的网络活动。Selenium 4及以上版本开始支持与CDP的集成,使我们能够捕获和分析HTTP请求。

步骤 3.1:捕获HTTP请求

在执行拖拽操作后,我们可以使用CDP来监听网络请求,并检测是否发送了特定的HTTP请求。

from selenium.webdriver import Chrome
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from webdriver_manager.chrome import ChromeDriverManager

driver = Chrome(service=ChromeService(ChromeDriverManager().install()))

# 启用Network域
driver.execute_cdp_cmd('Network.enable', {})

# 设置网络请求的监听
def request_listener(request):
    print("Request URL:", request['request']['url'])
    # 这里可以添加更多的逻辑来检查请求的URL、方法等

driver.execute_cdp_cmd('Network.setRequestInterception', {
    'patterns': [{'urlPattern': '*', 'resourceType': 'XHR', 'interceptionStage': 'HeadersReceived'}]
})
driver.request_interceptor = request_listener

# 执行拖拽操作...

步骤 3.2:等待请求完成

由于网络请求是异步的,我们需要确保在验证列表顺序变化之前,特定的HTTP请求已经成功完成。这通常需要在测试脚本中实现逻辑等待,例如使用time.sleep()简单等待,或更好的是,使用WebDriverWait等待特定条件的满足。

import time

# 简单等待示例
time.sleep(5)  # 等待5秒,确保请求完成

# 或使用WebDriverWait等待页面元素状态变化作为请求完成的标志

步骤 4: 验证列表项顺序变化

拖拽操作完成后,我们需要验证列表项的顺序是否发生了变化。这通常需要根据你的具体实现来编写相应的验证逻辑。

# 验证第一个列表项是否已经变为之前的第二个列表项
# 注意:这里的验证逻辑依赖于你的具体实现,可能需要调整
new_first_item = driver.find_element_by_css_selector(".item-0")
assert new_first_item.text == target_element.text

步骤 5: 清理测试环境

测试完成后,别忘了关闭浏览器。

driver.quit()

结语 🌟

通过上述步骤,我们演示了如何使用Selenium WebDriver对Antd Pro的DragSortTable组件进行自动化测试。这只是Selenium自动化测试能力的冰山一角。Selenium提供了丰富的API来支持复杂的Web应用测试,包括但不限于表单提交、弹窗处理、异步内容等。熟练掌握Selenium WebDriver,可以大大提高Web应用的测试效率和质量。希望本文能够为你在自动化测试的旅程上提供一些帮助和启发。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值