Java 登录测试使用错误的凭据通过

Java 登录测试使用错误的凭据通过,java,selenium-webdriver,Java,Selenium Webdriver,任何人都知道这个代码有什么问题。 即使我有错误的证书,它也通过了我的测试。 我在Eclipse中使用Java和SeleniumWebDriver 我不确定我做错了什么,似乎无法在谷歌上找到答案 public class LoginTest { String url ="jdbc:sqlserver://CODESV3;databaseName=Codes;integratedSecurity=true"; String DBdriver ="com.microsoft.sqls

任何人都知道这个代码有什么问题。 即使我有错误的证书,它也通过了我的测试。 我在Eclipse中使用Java和SeleniumWebDriver

我不确定我做错了什么,似乎无法在谷歌上找到答案

public class LoginTest {

    String url ="jdbc:sqlserver://CODESV3;databaseName=Codes;integratedSecurity=true";
    String DBdriver ="com.microsoft.sqlserver.jdbc.SQLServerDriver";
    Connection conn = null;
    WebDriver driver = null;
    PreparedStatement pstmt=null;
    ResultSet rs=null;


    @BeforeTest
    public void establishConn()
    {
        driver = new FirefoxDriver();
        driver.get("https://10.10.10.50/");
        // establish connection 
        try{
            Class.forName(DBdriver).newInstance();
            conn = DriverManager.getConnection(url);
        }catch(Exception e){
            System.out.println("Database failed to connect ");
        }
    }

    @Test
    public void testLogin()
    {
        String forceID="1234";
        String username="ayaslem";
        String password="Delpiero10+";
        boolean valueFound=false;
        // Check the db
        try{
            pstmt=conn.prepareCall("select * from Login where ForceID=? and Username=? and Password=?");
            pstmt.setString(2,forceID);
            pstmt.setString(3,username);
            pstmt.setString(4,password);
            rs=pstmt.executeQuery();
            valueFound =rs.next();

        }catch(Exception e){
                // report some error
        }
        // login into app
        driver.findElement(By.xpath("//*[@id='LogonModel_OrganisationName']")).sendKeys(forceID);
        driver.findElement(By.xpath("//*[@id='LogonModel_UserId']")).sendKeys(username);
        driver.findElement(By.xpath("//*[@id='LogonModel_Password']")).sendKeys(password);
        driver.findElement(By.xpath("//*[@id='maincontent']/form/div/fieldset/div[4]/div[2]/input")).click();
}

您不会对valueFound执行任何检查或断言。我不知道你用什么来测试它,但是你能做类似的事情吗

assertTrue(valueFound);


你没有对valueFound做任何事情?我希望对valueFound做什么?设置为false,valueFound=rs.next();如果值与数据库不匹配,则返回false;如果值与数据库匹配,则返回true。是的,但您没有根据我看到的情况对其进行测试?您只需将其设置为rs.next()。没有断言或检查它是否真实。不管valueFound的值是多少,你只要走出try块登录到应用程序。Stu Whyte,你的代码是有效的,但我希望我的代码进入该站点并输入凭据,不管凭据是对是错。然后检查输入的凭证是否在数据库中,如果没有通过测试,则通过测试。我不理解您的意思。这段代码放在注释为@Test的方法中。这就是我假设的方法,你的意思是失败的。这段代码位于方法的底部,因此在检查完数据库中的凭据后…谢谢Stu Whyte,它成功地工作了。我比较了代码后的页面标题和它的工作状态。
if(valueFound) {
    driver.findElement(By.xpath("//*[@id='LogonModel_OrganisationName']")).sendKeys(forceID);
    driver.findElement(By.xpath("//*[@id='LogonModel_UserId']")).sendKeys(username);
    driver.findElement(By.xpath("//*[@id='LogonModel_Password']")).sendKeys(password);
    driver.findElement(By.xpath("//*[@id='maincontent']/form/div/fieldset/div[4]/div[2]/input")).click();
} else {
    //dont login
}