Hola!
Estoy haciendo un script para automatizar el acceso a una intranet de forma que coja el usuario y contraseña de un fichero excel, pero al ejecutarlo me da un problema de alguna inicialización, parece ser por algun cast, la excepción que salta es java.lang.ClassCastException: [[Ljava.lang.String; cannot be cast to java.util.List , pero no sé donde puede estar el error. A través de system.out.println que fuí colocando en el código ví que recuperaba bien los datos del archvio excel.
¿Podría alguien ayudarme? Muchas gracias de antemano!!!
package test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.SeleneseTestBase;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
//Con este comando se indica que la clase utilizara parametros
@RunWith(Parameterized.class)
public class LoginReusableParam extends SeleneseTestBase{
public static int getnumUsuarios (){
String num="0";
{
System.out.println("No usuarios en el archivo");
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conexion = DriverManager.getConnection("jdbc:odbc:Datos_acces o");
Statement st = conexion.createStatement();
ResultSet rs = st.executeQuery("select COUNT (user_id) from [Hoja1$]");
{
/*public abstract Object getObject(int indiceColumna) throws SQLException
public abstract Object getObject(string nombreColumna) throws SQLException
Obtiene el valor contenido en la columna como un objeto Java cuyo tipo
sigue la traducción estándar JDBC de tipos SQL a tipos Java.
Este método es válido para tipos específicos de la base de datos. */
num=rs.getObject(1).toString();
}
conexion.close();
}catch ( Exception e )
}
return Integer.parseInt(num);
}
public static String getDato (int i, String dato){
String valor = "";
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conexion = DriverManager.getConnection("jdbc:odbc:Datos_acces o");
Statement st = conexion.createStatement();
{
System.out.println("No hay datos para la busqueda");
}
return valor;
}
@Parameters
// Se crea un array que contendra los datos para ejecutar la prueba.
ResultSet rs = st.executeQuery("select "+dato+" from [Hoja1$] where user_id="+i);
while ( rs.next()){
valor = rs.getObject(1).toString();
}
conexion.close();
}
catch ( Exception e )
public static String[][] getDatosAcceso(){
int numUser = getnumUsuarios();
//System.out.println("hola");
String [][] datos=null ;
if (numUser <=0){
System.out.println("El fichero no tiene datos de acceso a la intranet");
}
else {
//se crea un array bidimensional donde la primera columna serán los ususarios
//y la segunda las contraseñas
datos = new String [numUser][2];
int indiceArray = 0;
while ( indiceArray < datos.length){
datos [indiceArray][0]= getDato (indiceArray+1,"usuarios");
datos [indiceArray][1]= getDato (indiceArray+1,"passwords");
indiceArray++;
}
}
return datos;
}
@Test
public void testLogadoBasicoReusable() throws Exception {
DefaultSelenium selenium = new DefaultSelenium("localhost", 4444, "*firefox", "<aquí iría la URL>");
selenium.start();
String [][] datos = getDatosAcceso();
System.out.println(datos [0][0]);
int i = 0;
while ( i< datos.length){
selenium.windowMaximize();
selenium.open("http://intranet.mtp.es/");
selenium.selectFrame("sup");
selenium.type("name=email", datos [i][0]);
selenium.type("name=password",datos [i][1]);
selenium.click("name=Submit");
selenium.waitForPageToLoad("500000");
i++;
}
selenium.stop();
}