使用 selenium java 进行表排序数据验证
Posted
技术标签:
【中文标题】使用 selenium java 进行表排序数据验证【英文标题】:Table sort data validation using selenium java 【发布时间】:2022-01-04 17:35:43 【问题描述】:问题陈述 - 有一个具有排序功能的表格,我想实现
-
排序前获取数据
点击排序
排序后获取数据
比较阶段前后的数据
创建函数
Public List getDateHelper()
List<WebElement> data= new ArrayList()<>;
for(iterator logic)
data.add(driver.findelement(By.xpath("/div/div["+i+"]")))
return data;
这被称为
public void dataValidation()
List<WebElement> temp1 = new ArrayList()<>;
List<WebElement> temp2 = new ArrayList()<>;
temp1=helper.getDateHelper();
ClickOnSortBtn();//logic to click using selenium
temp2=helper.getDateHelper();
Assert.assertFalse(temp1.equals(temp2))
期望 temp1 和 temp2 不应该相等,但我看到 temp1 的值也在 ClickOnSortBtn() 上得到更新
我发现这与 ref 有关,但不知道如何解决
【问题讨论】:
在ClickOnSortBtn()
之后用这个temp1=helper.getDateHelper();
覆盖之前取行的值,这样它就没有意义了。可能你的意思是temp2=helper.getDateHelper();
作为用户,我在 temp 1 中获得数据的引用,并使用 UI 点击排序,现在想要比较前后的数据。我想了解如何实现这一目标
因为我在函数中使用 new 为 List 赋值,但我不确定,
我什至尝试分配/克隆/复制到新列表
@AlexeyR.thanks 指出错误。感谢您对提高问题质量的帮助
【参考方案1】:
请比较前 2 个元素和后 2 个元素的文本不相等。
喜欢,
// before clicking sort
String firstElementTextBefore = driver.findElement(tmpBy).getText();
String secondElementTextBefore = driver.findElement(tmpBy).getText();
String lastBeforeElementTextBefore = driver.findElement(tmpBy).getText();
String lastElementTextBefore = driver.findElement(tmpBy).getText();
// after clicking sort
String firstElementTextAfter = driver.findElement(tmpBy).getText();
String secondElementTextAfter = driver.findElement(tmpBy).getText();
String lastBeforeElementTextAfter = driver.findElement(tmpBy).getText();
String lastElementTextAfter = driver.findElement(tmpBy).getText();
// assertions
Assert.assertNotEquals(firstElementTextBefore, firstElementTextAfter);
Assert.assertNotEquals(secondElementTextBefore, secondElementTextAfter);
Assert.assertNotEquals(lastBeforeElementTextBefore, lastBeforeElementTextAfter);
Assert.assertNotEquals(lastElementTextBefore, lastElementTextAfter);
【讨论】:
以上是关于使用 selenium java 进行表排序数据验证的主要内容,如果未能解决你的问题,请参考以下文章