
Selenium это конечно хорошо, и запишет, и сравнит, и воспроизведет. А хочется ведь логику «поинтереснее» в тесты добавить, и вот тут весьма слабое знание JAVA мешает (ведь «держала» я её в руках последний раз в университете), но есть поисковики, да и просто хорошие, добрые и профессиональные люди :). Ниже представлены «джава-полезности», которые мне понадобились и пригодились во время доведения до ума скрипта, записанного с помощью Selenium IDE. Конечно же, это только начало «пути» и много нового, непознанного впереди. Возможно, и вам пригодиться, а может что-нибудь еще полезного мне посоветуете.
1. Кодировка.
В идеальном случае все элементы страницы живут с уникальными ID. Но тогда бы все было проще и не так интересно. Случилось у меня следующее: записала скрипт, экспорт сделала, а там… А там вместо русскоязычного словосочетания, «кракозябистость», которая компилируется, но не выполняется как надо. Эх, кодировка при компиляции определяется неправильно. Но мир не без добрых людей и вот компилятор начинает понимать, что мне от него надо:
javac -encoding utf-8
2. Запросы к БД.
Считать то, что на странице это хорошо. А вот сравнить это добро с начинкой приложения, это уже интереснее. То, с чем я работаю в данный момент, обладает вполне обычной MySql-ной начинкой. Стало мне интересно, как бы добраться из скрипта в БД. Совсем не с первого раза, но все получилось следующее:
import java.sql.*;
public class Query{
public static void main(String[] args){
Connection con = null;
Statement stmt;
…
try{
//загружаем класс драйвера
Class.forName("com.mysql.jdbc.Driver");
//создаем соединение с БД
con = DriverManager.getConnection("[url Базы данных]", "[логин]","[пароль]");
stmt = con.createStatement();
//запрос к БД
ResultSet rs = stmt.executeQuery("[запрос к БД]");
// а уже из rs данные и получаем
stmt.close();
con.close();
}
//Отлавливаем исключения
catch(java.lang.ClassNotFoundException e){
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}
catch(SQLException ex){
System.err.println("SqlException: " + ex.getMessage());
}
}
}
Подробнее описание пакета, классов и методов смотрим тут: http://java.sun.com/javase/6/docs/api/java/sql/package-summary.html.
3. Работа с датами.
Даты разные нужны, даты всякие важны, а текущая - самая дорогущая. Был в JAVA класс Date, а стал Calendar. Ниже то, что пригодилось мне:
import java.util.Calendar;
…
// Получаем текущую дату
Calendar rightNow = Calendar.getInstance();
// Записываем в переменную типа String
StartDate = String.valueOf(rightNow.get(Calendar.DATE)) + "." + String.valueOf(rightNow.get(Calendar.MONTH)+1) + "." + String.valueOf(rightNow.get(Calendar.YEAR));
// Добавляем к дате 10 дней
rightNow.add(Calendar.DATE,10);
…
Остальные «календарные» возможности и способности смотрим тут: http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html
Продолжение следует...