You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#结合Selenium WebDriver验证产品按名称(A-Z)排序?

在Selenium WebDriver中验证产品按名称升序排列的C#实现

首先优化你现有选择下拉框的代码——Thread.Sleep稳定性差,换成显式等待更可靠:

// 初始化显式等待,超时时间10秒
var wait = new WebDriverWait(TestSetup.driver, TimeSpan.FromSeconds(10));

// 等待下拉框加载完成并点击
IWebElement productSort = wait.Until(d => d.FindElement(By.XPath("//span/select[@data-test='product_sort_container']")));
productSort.Click();

// 等待"A-Z"选项加载完成并点击
IWebElement nameOption = wait.Until(d => d.FindElement(By.XPath("//div/span/select/option[@value='az']")));
nameOption.Click();

接下来是核心的排序验证逻辑,步骤如下:

  • 获取当前页面所有产品的名称文本
  • 创建该列表的副本并按字母升序排序
  • 对比原列表和排序后的列表是否完全一致

完整验证代码:

// 等待产品列表加载完成
wait.Until(d => d.FindElements(By.ClassName("inventory_item_name")).Count > 0);

// 提取所有产品名称文本并去空格
List<string> actualProductNames = TestSetup.driver.FindElements(By.ClassName("inventory_item_name"))
    .Select(e => e.Text.Trim())
    .ToList();

// 创建排序后的对比列表
List<string> sortedProductNames = new List<string>(actualProductNames);
sortedProductNames.Sort();

// 验证排序正确性(以NUnit断言为例,其他测试框架可替换对应断言方法)
Assert.AreEqual(sortedProductNames, actualProductNames, "产品未按名称A-Z升序排列");

关键说明

  • 显式等待通过WebDriverWait等待元素可交互/存在,避免固定等待时间带来的不稳定问题
  • 用Trim()去除名称文本的首尾空格,避免干扰排序对比
  • List的Sort()方法默认按字符串Unicode编码升序排序,符合A-Z的排序需求
  • 断言会在排序不符时抛出明确错误提示,方便定位问题

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:20:32