WebDriver - AssertionError显示错误的预期

时间:2015-06-29 12:41:18

标签: java selenium

我得到的错误: java.lang.AssertionError: 预期:0 实际:1

但在我的代码中,我实际上期望它是'1'

@Test
public void d_test2X4() {
    driver.switchTo().defaultContent();

    driver.findElement(By.id("rows")).clear();
    driver.findElement(By.id("cols")).clear();

    WebElement rows;
    rows = driver.findElement(By.id("rows"));
    rows.sendKeys("2");

    WebElement col;
    col = driver.findElement(By.id("cols"));
    col.sendKeys("4");

    click_go = driver.findElement(By.cssSelector("button"));
    click_go.click();

    driver.switchTo().frame(driver.findElement(By.id("eyein-iframe")));

    Assert.assertEquals(driver.findElements(By.id("media-item-7")).size(), 1);
    driver.quit();
}

我希望'media-item-7'为'1' 它适用于另一个执行几乎相同流程的@test

检查:

<ul>
    <li id="media-item-0" class="plugin-media-item media-item" style="width: 22.5%; margin: 0px 1.25%;" data-index="0"></li>
    <li id="media-item-1" class="plugin-media-item media-item" style="width: 22.5%; margin: 0px 1.25%;" data-index="1"></li>
    <li id="media-item-2" class="plugin-media-item media-item" style="width: 22.5%; margin: 0px 1.25%;" data-index="2"></li>
    <li id="media-item-3" class="plugin-media-item media-item" style="width: 22.5%; margin: 0px 1.25%;" data-index="3"></li>
    <li id="media-item-4" class="plugin-media-item media-item" style="width: 22.5%; margin: 0px 1.25%;" data-index="4"></li>
    <li id="media-item-5" class="plugin-media-item media-item" style="width: 22.5%; margin: 0px 1.25%;" data-index="5"></li>
    <li id="media-item-6" class="plugin-media-item media-item" style="width: 22.5%; margin: 0px 1.25%;" data-index="6"></li>
    <li id="media-item-7" class="plugin-media-item media-item" style="width: 22.5%; margin: 0px 1.25%;" data-index="7">
        <div class="media-header"></div>

3 个答案:

答案 0 :(得分:0)

如果您查看junit API,您会看到:

assertEquals(String expected, String actual) 

所以基于你说你期望值为1然后1应该在第一个位置(预期)而你的findElements.size在第二个位置(实际)。我想你要做的是:

Assert.assertEquals(1, driver.findElements(By.id("media-item-7")).size());

答案 1 :(得分:0)

首先检查以下网络元素是否可搜索: -

案例1: - 尝试以下代码而不切换到iframe。如果找到,那么其他尝试案例2
案例2: - 首先切换到iframe,然后在代码下面运行。

try {
            wait = new WebDriverWait(driver, 2);            
            wait.until(ExpectedConditions.presenceOfElementLocated(By.id("media-item-7")));
            System.out.println("Web element is present");
        }catch(ElementNotFoundException e1){
            System.out.println("Element is not present");
        }
  • 如果网页元素是可搜索的,那么只尝试
    Assert.assertEquals(1,driver.findElements(By.id(&#34; media-item-7&#34;))。size());

  • 我认为在您的情况下,网页元素无法搜索。此外,您切换到iframe,因此请确保您的网络元素属于iframe(使用开发人员工具检查iframe并检查您的网络元素 media-item-7 是否属于它)

答案 2 :(得分:-1)

由于某种原因,它只是没有找到这个确切的元素。 等待解决:wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("media-item-7")));

  • 也可以通过“睡眠”来解决