2014-06-11 162 views
0

我已经从java的格式导出了Selenium IDE的测试用例。问题是,当我想运行它时出现“找不到元素”的错误,我想在我的java文件中修复它。我添加了断言,但添加了所有错误的尝试和捕获,所以当我添加一个无关的元素时,我没有在我的页面上通过测试。我想用isElementPresent函数代替try和catch。任何想法如何使用它并修复这个错误?谢谢!在硒测试中找不到元素

public void testUser() { 
     try { 
      driver.findElement(By.linkText("users")).click(); 
      driver.findElement(By.id("createNewButton")).click(); 
      driver.findElement(By.id("name")).clear(); 
         driver.findElement(By.id("username")).sendKeys("USER1"); 
      driver.findElement(By.id("password")).clear(); 
      driver.findElement(By.id("password")).sendKeys("123"); 
      driver.findElement(By.id("addUserButton")).click(); 
      driver.findElement(
        By.xpath("(//a[contains(text(),'Delete user')])[3]")) 
        .click(); 
      driver.findElement(
     } catch (NoSuchElementException ex) { 
     } 
    } 

    private boolean isElementPresent(By by) { 
     try { 
      driver.findElement(by); 
      return true; 
     } catch (NoSuchElementException e) { 
      return false; 
     } 
    } 
} 

回答

0

试试这个

!driver.findElements(locator).isEmpty() 

但在这种情况下,最好使用Html Elements库代码清晰。

例如

WebElementMatchers.exists([yourElement]) 
+0

谢谢,但如果我有多个元素是什么?例如我有用户名和密码和userbutton。我应该写这样的:if(!driver.findElements(password).isEmpty())then driver.findElement(By.id(“password”))。sendKeys(“123”); ?和用户名相同? – user3409650

+0

你可以像你所描述的那样做,但它不是明确的方式。使用Html元素库。您可以将您的登录表单描述为一个对象,并可以轻松使用它。看看github链接上的例子。代码将看起来像loginForm.password.type(“登录”)。 –

+0

另外我很感兴趣,为什么你的期望元素不出现?也许你应该等待他们的外表。如果找不到元素,这是跳过操作的不好方法。您的登录字段可能会消失,但在这种情况下您的测试会通过。 –