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

自动化测试脚本批量语言增删逻辑异常问题排查求助

脚本问题定位咨询

需求逻辑

  • 添加语言前:遍历Future File中的所有语言,检查网站页面的语言列表,若存在则勾选复选框删除该语言,直至Future File中的语言全部从页面移除。
  • 完成删除后,将Future File中的这些语言重新添加到页面。

问题现状

按上述逻辑编写代码后,脚本执行时存在异常,已困扰两天无法解决。

测试数据(Future File)

|Name|
|German|
|Turkish|
|Spain|

测试代码

public void adminAddMultipleLanguageFromDatatable(io.cucumber.datatable.DataTable dataTable) throws InterruptedException {
    List<WebElement> Languages = driver.findElements(By.xpath("//table/tbody/tr/td[2]"));
    List<Map<String, String>> data = dataTable.asMaps();
    for (Map<String, String> datas : data) {
        for (int i = 0; i < Languages.size(); i++) {
            String dataName = datas.get("Name");
            String name = Languages.get(i).getText();
            if (dataName.equalsIgnoreCase(name)) {
                WebElement checkBox = driver.findElement(By.xpath("//table/tbody/tr[" + (i + 1) + "]/td[1]"));
                click(checkBox);
                click(addLanguagePage.languageDelBtn);
                WebElement mes = driver.findElement(By.xpath("//div[@class='message warning fadable']"));
                String m = "Successfully Deleted\n" + "Close";
                String m1 = mes.getText();
                Assert.assertEquals(m, m1);
            }
            click(addLanguagePage.languageAddBtn);
            sendText(datas.get("Name"), addLanguagePage.languageNameOption);
            click(addLanguagePage.languageSaveBtn);
            WebElement m2 = driver.findElement(By.xpath("//div[@class='message success fadable']"));
            String mm2 = m2.getText();
            String expecct = "Successfully Saved\n" + "Close";
            Assert.assertEquals(expecct, mm2);
        }
    }
}

问题咨询

请帮忙定位该脚本中的问题所在?


脚本问题定位分析

  1. 元素过期失效:初始获取的Languages列表是页面加载时的元素集合,删除语言后页面DOM更新,旧的元素引用会失效,后续访问Languages.get(i)会触发StaleElementReferenceException。
  2. 逻辑流程颠倒:当前代码遍历每个测试数据时,会在遍历语言列表的循环里立刻执行添加操作,不符合“先全部删除目标语言,再统一添加”的需求,导致删除和添加操作混乱。
  3. 索引定位错误:删除语言后,表格行的索引会动态变化,用初始的i+1定位复选框,会出现定位到错误行或找不到元素的情况。
  4. 无等待直接断言:删除、添加操作后直接查找提示元素,没有设置显式等待,可能元素未加载完成就获取文本,引发断言失败或NoSuchElementException。
  5. 代码拼写错误:变量expecct拼写错误,应为expect,属于代码规范问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:57:42