如何在selenium webdriver中使用assert?

时间:2015-12-10 13:03:11

标签: java selenium selenium-webdriver automated-tests

提前感谢所有人。

我需要知道如何在selenium webdriver中进行断言。我的情况是我有一个编辑但在屏幕上,但编辑按钮存在某些特定标准。所以我想检查一下,如果该按钮存在,应该点击它,它应该打开另一个子窗口,并应该执行某些操作。如果屏幕上没有该编辑按钮元素,则应检查我的关键字框架中的注销按钮的下一个条件。

我尝试过try和catch块并且工作正常。代码是:

.\wkhtmltopdf.exe "http://localhost:6001" out.pdf

但我想用断言来做。虽然try和catch没有停止代码,但是在执行testng之后它显示测试用例失败了。我如何用断言来做?

我正在使用关键字框架,其中一个是类用于关键字,另一个用于读取excel文件。

4 个答案:

答案 0 :(得分:2)

典型的Selenium设置将包含一个附加到项目的测试框架。

有几种测试框架可供使用,但这里是最受欢迎的Java:

  • JUNIT
  • TestNG的
  • ...

如果您的项目附加了测试框架,则可以使用如下的断言:

Assert.assertTrue(driver.getWindowHandles().size().equals(2)); 

如果断言失败,则测试脚本将失败。这只是一个小例子。我当然会对如何使用您选择的测试框架进行一些研究。 Selenium开箱即用,旨在与您使用的产品无关。发挥创意。

答案 1 :(得分:1)

尝试以下代码:

Boolean isPresent = driver.findElements(By.yourLocator).size() > 0

if(isPresent == true)
{
     //code
}

答案 2 :(得分:0)

首先,您需要检查该按钮在网页中显示的位置。你可以这样做 -

WebElement web=driver.findElement(By.xpath("//*[@id='myModal']/div/div/div[2]/form/div/div[10]/div/button[1]"));
boolean bool=web.isDisplayed();
Assert.assertEquals(true, bool); //here it will match that if that button is present or not. If present it will continue execution from the next line or if it is not present the execution stops there and your test case fails.

答案 3 :(得分:0)

你可以避免尝试抓住

List <WebElement> editButton= driver.findElements(By.xpath("//*[@id='main']/div[1]/table/tbody/tr[2]/td[6]/button"));

if(editButton.size()>0)
{
editButton.get(0).click();
 for(String winHandle : driver.getWindowHandles()){
            driver.switchTo().window(winHandle);
        }

        // Perform the actions on new window
        driver.findElement(By.xpath("//*[@id='myModal']/div/div/div[2]/form/div/div[10]/div/button[1]")).click();

        //Close the new window, if that window no more required
        //driver.close();

        //Switch back to original browser (first window)

        driver.switchTo().window(winHandleBefore);

}
else
{
driver.findElement((By.xpath("//*[@id='logoutForm']/ul/li[2]/a"))).click();

}