gpt4 book ai didi

Java - Selenium - 使用断言时行为不一致

转载 作者:行者123 更新时间:2023-11-30 12:06:58 25 4
gpt4 key购买 nike

在尝试断言显示错误消息时,我遇到了一些奇怪的、不一致的行为。

我有 2 个测试,它们都在做同样的事情,除了向表单发送不同的值并检查不同的错误消息。

        System.setProperty("webdriver.chrome.driver", "C:\\Users\\dan.febry\\Desktop\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();

driver.get("https://mywebsite.com");

driver.findElement(By.id("Identifier")).sendKeys("username");
driver.findElement(By.id("Password")).sendKeys("password");
driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div/div[2]/div[1]/div/form/button")).click();

driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div/div[4]/div/button")).click();
driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div/div[4]/div/div/form[1]/button")).click();

driver.findElement(By.id("OldPassword")).sendKeys("Password!23");
driver.findElement(By.id("NewPassword")).sendKeys("Password123!");
driver.findElement(By.id("ConfirmPassword")).sendKeys("");
driver.findElement(By.xpath("//*[@id=\"form0\"]/div[5]/div/button")).click();

List<WebElement> allElements = driver.findElements(By.xpath("//*[@id=\"form0\"]/div[4]/ul/li"));
Assert.assertEquals(allElements.size(), 1);
Assert.assertEquals(allElements.get(0).getText(), "The new password and confirmation password do not match.");

// TODO Verify failed counter has not gone up.

driver.close();

}

@Test
public void ChangePasswordCurrentPasswordIncorrect() {

System.setProperty("webdriver.chrome.driver", "C:\\Users\\dan.febry\\Desktop\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();

driver.get("https://mywebsite.com");

driver.findElement(By.id("Identifier")).sendKeys("username");
driver.findElement(By.id("Password")).sendKeys("password");
driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div/div[2]/div[1]/div/form/button")).click();

driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div/div[4]/div/button")).click();
driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div/div[4]/div/div/form[1]/button")).click();

driver.findElement(By.id("OldPassword")).sendKeys("Password@123");
driver.findElement(By.id("NewPassword")).sendKeys("Password123!");
driver.findElement(By.id("ConfirmPassword")).sendKeys("Password123!");
driver.findElement(By.xpath("//*[@id=\"form0\"]/div[5]/div/button")).click();

List<WebElement> allElements = driver.findElements(By.xpath("//*[@id=\"form0\"]/div[4]/ul/li"));
Assert.assertEquals(allElements.size(), 1);
Assert.assertEquals(allElements.get(0).getText(), "Incorrect password.");

// TODO Verify failed counter has gone up.
// TODO Reset failed counter value

driver.close();

}`

第一个测试运行、通过并正确断言文本。但是,第二个测试失败并显示以下错误:

java.lang.AssertionError: 应为 [Incorrect password.] 但找到 []

HTML 是:

<div class="validation-summary-errors text-danger" data-valmsg-summary="true">
<ul>
<li>Incorrect password.</li>
</ul>
</div>

<div class="text-danger validation-summary-errors" data-valmsg-summary="true">
<ul>
<li>The new password and confirmation password do not match.</li>
</ul>
</div>

附言。不确定我是否在这里遗漏了一些重要信息,所以请告诉我是否应该提供有关此问题的更多信息。

最佳答案

可能没有得到正确的 Xpath 因此它返回零列表。

代替这个xpath

driver.findElements(By.xpath("//*[@id=\"form0\"]/div[4]/ul/li"))

Xpath 下尝试并给一些时间 WebDriverWait 来查找元素

 WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='validation-summary-errors text-danger']/ul/li")))

关于Java - Selenium - 使用断言时行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55246109/

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