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

自动化测试本地运行正常但Jenkins执行失败问题求助

Selenium自动化测试Jenkins执行失败(本地运行正常)

我实现了一个基于Page Object模式的Selenium自动化测试,用于验证网站的语言切换功能。该测试在本地环境运行完全正常,但部署到Jenkins执行时出现断言错误,错误信息为:

AssertionError: Test isn't completed: error when trying to change language: expected false to be true

测试源码

test.js

const assert = require('chai').assert;
const LanguagePage = require('../PageObjects/LanguagePage');

describe('Language Change Test', function () {
this.timeout(120000);

it('Verify language change button', async function () {
    const result = await LanguagePage.performLanguageChange();
    assert.isTrue(result, 'Test isn\'t completed: error when trying to change language');
});

after(async function () {
    await LanguagePage.closeBrowser();
});
});

BasePage.js

const webdriver = require('selenium-webdriver');
const { By } = require('selenium-webdriver');

class BasePage {
constructor() {
    this.driver = new webdriver.Builder().forBrowser('chrome').build();
    this.driver.manage().setTimeouts({ implicit: 10000 });
}

async goToUrl(url) {
    return await this.driver.get(url);
}

async findElementByXPath(path) {
    return await this.driver.findElement(By.xpath(path));
}

async closeBrowser() {
    return await this.driver.quit();
}
}

module.exports = BasePage;

LanguagePage.js

const BasePage = require('./BasePage');

class LanguagePage extends BasePage {
async performLanguageChange() {
    try {
        await this.goToUrl('https://www.mts.by');
        const langButton = await this.findElementByXPath('/html/body/div[6]/header/div[1]/div/div/div[2]/div/div/a[2]');
        await langButton.click();
        const englishButton = await this.findElementByXPath('/html/body/div[6]/header/div[2]/div/div/div[2]/div/button');
        const buttonText = await englishButton.getText();
        console.log('Button Text:', buttonText);
        return buttonText === 'Sign In';
    } catch (error) {
        return false;
    }
}
}

module.exports = new LanguagePage();

验证逻辑与排查尝试

我通过getText()方法获取目标按钮的文本,与"Sign In"做严格对比,以此验证网站是否切换为英文版本。本地运行时该逻辑完全生效,但在Jenkins上执行失败。

我已经尝试过以下排查手段,但问题仍未解决:

  • 在click()和getText()方法前后添加手动延迟
  • 用CSS选择器替换绝对XPath(网站的完整XPath与普通XPath一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:52:31