gpt4 book ai didi

java - Selenium - Java - 如何断言/验证页面上的所有链接都正常工作,获取标题并根据预期标题进行验证

转载 作者:行者123 更新时间:2023-12-01 16:29:59 24 4
gpt4 key购买 nike

我是测试自动化的新手,目前正在开发一个个人项目

我有这种方法,它可以找到页面上某个部分的所有链接,单击每个链接,浏览每个选项卡,然后获取每个页面的标题

但是,我想要一种方法来根据预期标题列表验证这些链接的标题

为了做到这一点,修改它的最佳方法是什么?存储在数组中然后分别断言/验证每个标题会更好吗?

我尝试了几种方法来通过将返回类型更改为 String 和 List 来断言,但没有成功

public void linksAreWorkingDashBoardLeftPanal() throws Exception {

List<WebElement> li_All = links_myAccountNav.findElements(By.tagName("a"));
for(int i = 0; i < li_All.size(); i++){

String clickOnLinkTab = Keys.chord(Keys.CONTROL, Keys.ENTER);
links_myAccountNav.findElements(By.tagName("a")).get(i).sendKeys(clickOnLinkTab);
Thread.sleep(5000);

}

//Opens all the tabs
Set<String> getTitleinWindow = driver.getWindowHandles();
Iterator<String> it = getTitleinWindow.iterator();

while(it.hasNext())
{

driver.switchTo().window(it.next());
System.out.println(driver.getTitle());
}

最佳答案

修改while循环如下;

List<String> expectedTitleList = new ArrayList<>(); 
// Get the expected titles in a list.
// You have to initiate and add expected titles to this list, before running the while loop.

List<String> actualTitleList = new ArrayList<>();
while(it.hasNext())
{
driver.switchTo().window(it.next());
actualTitleList.add(driver.getTitle());
}

// Create copies of each list;
Set<String> expectedSet = new HashSet<>(expectedTitleList);
Set<String> actualSet = new HashSet<>(actualTitleList);

Set<String> expectedOnlySet = new HashSet<>(expectedSet);
Set<String> actualOnlySet = new HashSet<>(actualSet);

expectedOnlySet.removeAll(actualSet);
actualOnlySet.removeAll(expectedSet);

// Check if expectedOnlySet and actualOnlySet are empty
// If both of them are empty then all titles are received as expected.

boolean isEmpty = (expectedOnlySet.size() == 0 && actualOnlySet.size() == 0);

if (expectedOnlySet.size() > 0 || actualOnlySet.size() > 0) {
// If expectedOnlySet contain any title; it means those titles are not opened in the browser.

// If actualOnlySet contain any title; it means those titles are not expected titles.
StringBuilder message = new StringBuilder();

for (String x: expectedOnlySet) {
message.append("Did not receive: ");
message.append(x).append(", ");
}

for (String y: actualOnlySet) {
message.append("Not expected but received: ");
message.append(y).append(", ");
}

Assert.assertTrue(false, message,toString());
}else {
Assert.assertTrue(true);
}

这里你可以使用Collections中的removeAll()方法。检查documentation

我们必须检查这两种情况;

  1. 是否收到所有预期标题
  2. 预计收到所有标题

关于java - Selenium - Java - 如何断言/验证页面上的所有链接都正常工作,获取标题并根据预期标题进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62067689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com