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

基于Selenium WebDriver+C#的白俄罗斯铁路网站自动化测试求助

白俄罗斯铁路网站自动化测试实现指南

一、测试步骤总览

1. 谷歌跳转目标站点

  • 1.1 打开google.com
  • 1.2 在搜索输入框中输入“белорусская железная дорога”
  • 1.3 点击"Google Search"按钮
  • 1.4 从搜索结果中点击对应目标URL的链接

2. 主页面功能测试

  • 2.1 打开目标站点
  • 2.2 切换到英文语言
  • 2.3 校验「News」板块展示的新闻数量不少于4条
  • 2.4 从搜索结果中点击对应目标URL的链接
  • 2.5 校验页面底部展示文本“© 2019 Belarusian Railway”
  • 2.6 校验页面顶部存在5个按钮:“Press Center”、“Timetable”、“Passenger Services”、“Freight”、“Corporate”

3. 搜索功能测试

打开目标站点后执行以下操作:

  • 在“Поиск”输入框中输入20个随机字符,每次执行测试输入的字符需互不相同
  • 校验浏览器地址变更为https://www.rw.by/search/?s=Y&q=前缀
  • 校验页面展示文本“К сожалению, на ваш поисковый запрос ничего не найдено.”
  • 清空之前输入的内容,替换输入“Санкт-Петербург”
  • 点击“Найти”按钮
  • 校验页面共展示15条文章链接
  • 将这些链接的文本输出到控制台

4. 日历功能测试

打开目标站点后执行以下操作:

  • 在“Откуда”和“Куда”输入框中输入有效的地点名称
  • 点击日历按钮,选择从当日开始往后5天的日期,若跨月需自动适配(例如9月29日执行测试则选择10月4日)
  • 点击“Найти”按钮
  • 按“Минск-Пассажирский — Брест-Центральный” – 19:25的格式将发车时间和列车名称输出到控制台
  • 点击第一条结果链接
  • 校验页面展示对应列车名称
  • 校验“Дни курсирования”下方的文本不为空
  • 点击站点logo返回首页
  • 校验首页加载正常

二、现有已实现代码

public class Tests
{
    private IWebDriver driver;
    private readonly By _inputField = By.XPath("//input[@name = 'q']");
    private readonly By _searchButton = By.XPath("//input[@class = 'gNO89b']");
    private readonly By _targetLink = By.XPath("//h3[@class = 'LC20lb DKV0Md']");
    [SetUp]
    public void Setup()
    {
        driver = new OpenQA.Selenium.Chrome.ChromeDriver();
        driver.Navigate().GoToUrl("https://google.com");
        driver.Manage().Window.Maximize();
    }

    [Test]
    public void Test1()
    {
        var inputField = driver.FindElement(_inputField);
        inputField.SendKeys("белорусская железная дорога");
        var searchBtn = driver.FindElement(_searchButton);
        Thread.Sleep(1000);
        searchBtn.Click();
        var targetUrl = driver.FindElement(_targetLink);
        targetUrl.Click();
        Assert.Pass();
    }
}

三、优化与实现指导

现有代码优化点

  1. 新增测试后清理逻辑,避免浏览器进程残留,添加如下代码:
[TearDown]
public void TearDown()
{
    driver.Quit();
    driver.Dispose();
}
  1. 替换Thread.Sleep为Selenium自带的显式等待,既提升用例稳定性也缩短执行时间,示例代码如下:
// 等待元素可点击的通用写法
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
var searchBtn = wait.Until(d => 
{
    var ele = d.FindElement(_searchButton);
    return ele.Displayed && ele.Enabled ? ele : null;
});
searchBtn.Click();
  1. 调整元素定位逻辑,谷歌的动态class(比如gNO89b、LC20lb DKV0Md)会定期更新,建议定位搜索结果时筛选href包含rw.by的元素,稳定性更高。

各模块实现要点

  1. 主页面功能测试
  • 语言切换定位顶部语言切换按钮,点击后校验页面核心元素文本为英文即可
  • News板块校验用FindElements获取所有新闻条目,断言返回集合的长度>=4
  • 顶部导航按钮、底部版权文本都可以通过元素Text属性直接和目标值比对校验
  1. 搜索功能测试
  • 随机20位字符串可以用C#的Random类从字母数字池中随机抽取拼接,保证每次运行值不同
  • 地址校验直接读取driver.Url属性,和目标地址前缀比对即可
  • 搜索结果链接用FindElements定位所有符合规则的a标签,遍历输出Text属性到控制台
  1. 日历功能测试
  • 5天后的日期直接用DateTime.Now.AddDays(5)计算,自动适配跨月、跨年场景,不需要单独写逻辑
  • 日历控件操作先点开弹窗,判断目标日期和当前日期是否同月,不同月先点击切换月份按钮,再选中对应日期即可
  • 列车信息定位结果列表的车次名称、时间元素,按要求格式拼接后输出,后续详情页校验、返回首页操作都是常规的元素点击、文本校验逻辑,最后校验首页logo存在即可确认首页加载正常

基础学习优先级

  1. 先掌握Selenium三种等待方式:隐式等待、显式等待、流畅等待,这是稳定自动化用例的核心
  2. 掌握8种元素定位方法,优先用ID、Name、CssSelector,XPath作为兜底,不要用容易变化的class、相对位置定位
  3. 掌握常用元素操作方法:SendKeys、Click、Clear、文本/属性读取
  4. 掌握你使用的单元测试框架(当前示例为NUnit)的断言写法、生命周期注解用法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:06:03