First launch by Dima, Alena

To check if our application environment works fine we recommend that you start by running a simple test – login to your SalesForce account, read the header of a page and logout.

By this step you should have JDK, Ant, Selenium-Grid, Firefox and TortoiseSVN installed.
Before we will be able to launch a test on this system, we will need to start
Hub & RC.

To start the Hub, let’s open a command window (shell) – ‘cmd’ and run:

ant -f C:\selenium\build.xml launch-hub

To start RC, let’s open another command window and run:

ant -f C:\selenium\build.xml -Dport=5565 -Dhost=localhost -Denvironment="*chrome"
-DhubURL=http://localhost:4444 launch-remote-control

For IE, change to -Denvironment=’*iehta’.

In the two open windows we just opened, you will see something like this:

Fig. 1 Hub & RC started

To validate a successful start for Hub and RC you should now be able to open this page in a browser:

http://localhost:4444/console

Fig. 2 http://localhost:4444/console

1. Simple test from PHP team

In this section we are going to run a simple PHP login/logout test on the SalesForce platform. First, you will need to download an archive with source files from here.
Unpack the zipfile into C:\simple_test_php. You will see a ‘logs’ directory, a ‘screenshots’ directory. They may be empty now, but both will be filled with data during the test execution. You will also see the log4php configuration files file.properties and console.properties as well as actual test in file loginLogoutTest.php, which are in root directory. If you have registered a development account with SalesForce please change these two lines with your credentials:

define('USERNAME', 'YOUR_USERNAME');
define('PASSWORD', 'YOUR_PASWORD');

If you are going to use IE please replace ‘*chrome’ with ‘*iehta’ in a following line:

$this->selenium = new Testing_Selenium("*chrome", "https://login.salesforce.com/");

By default, the logs will be seen on the system console. If you would like to direct them to a file – find following lines inside loginLogoutTest.php:

// define('LOG4PHP_CONFIGURATION', dirname(__FILE__).'/file.properties');
define('LOG4PHP_CONFIGURATION', dirname(__FILE__).'/console.properties');

Uncomment first and comment out the second line. This switches the output from console to file.
To start a test – execute following command:

cd C:\simple_test_php & phpunit loginLogoutTest.php

If all was done correctly, the test will start. Open a browser to the SalesForce login page and the test script will attempt to use the login credentials that you defined in the loginLogoutTest.php file earlier.
If you are logging to console you will see something like this:

PHPUnit 3.3.14 by Sebastian Bergmann.

INFO - Selenium started
INFO - We are logged in
INFO - Page title is Salesforce - Developer Edition
INFO - We are logged out

INFO - Selenium stopped
.

Time: 01:15

OK (1 test, 1 assertion)

Also, you will see the file ok.png in ‘screenshots’ folder containing login page.

If you were to use invalid account username and password values into your config files, you will see the following messages on your console (or logfile) with messages similar to this:

PHPUnit 3.3.14 by Sebastian Bergmann.

INFO - Selenium started
FATAL - Your login attempt has failed. The username or password may be incorrect.
INFO - Selenium stopped
F

Time: 36 seconds

There was 1 failure:

1) testLoginLogout(loginLogoutTest)
Login attempt has failed!
Failed asserting that is false.

After this test, you will get a new file named: error.png.
If you were logging this test to a file you will get a file messageLog.log in directory ‘logs’.
That’s it for now.

2. Here is a Simple test from Java team

The Java team test can be download from here.

Unpack the zipfile contents into C:\ and you will have C:\simple_test_java.

All you need to do is to change the login details in a following lines of testng.xml file:

parameter name="login" value="YOUR_LOGIN"
parameter name="password" value="YOUR_PASSWORD"

If you don’t have an account with SalesForce – leave it as is and you will watch a spectacular test failure caused by the login error.

Just like the PHP test, if you use IE you will also need to switch the ‘*chrome’ with ‘*iehta’:

selenium = new DefaultSelenium("localhost", 4444, "*chrome", "https://login.salesforce.com" )

To compile and run the Java test, please execute following command in shell:

cd C:\simple_test_java & ant -f build.xml

This test will open the selected browser and attempt to login into SalesForce with credentials provided by you, just as the testing did during the PHP test.

It is hard to distinguish our test console messages as there are plenty of them from TestNG.
This is why I chose to use a special TestNG class Reporter:

System.out.println("Login done successfully!"); // send to console
Reporter.log("Login done successfully!"); // send to TestNG report

To look at the TESTNG report after the test completes, you will need to open the file
C:\simple_test_java\logs\testng_reports\index.html.
If you open the index.html file, follow the link labelled ‘reporter output’. This will allow you to review the test log file.

If the test succeeded with login you will see something like:

Login done successfully!
Page title is: _Salesforce - Developer Edition_
Logout done successfully!
Page title is: _Salesforce_

Otherwise:

ERROR: Login attempt has failed. May be your login or password is incorrect!

If you saw either of these messages in the reporter output, then your setup is fully functional and is well prepared for the many other complicated tests that we have planned.

Hakuna Matata!



Print this post | Home

12 comments

  1. Робин Гуд says:

    господа seleniumbuild.xml

    это и есть build.xml что лежит в selenium-grid?

    а ещё мне непонятно зачем вы используете связку Selenium Hub + Selenium RC.
    Разве недостаточно одного Selenium RC в вашем случае?

  2. Dima says:

    >> господа seleniumbuild.xml
    >> это и есть build.xml что лежит в selenium-grid?

    Да, это он. // (надо бы в тексте исправить) –> исправлю

    >> а ещё мне непонятно зачем вы используете связку Selenium Hub + Selenium RC.
    >> Разве недостаточно одного Selenium RC в вашем случае?

    Вопрос, безусловно, интересный (спасибо!) – похоже, мы как-то упустили объяснение, почему решили использовать именно grid.
    Действительно, можно обойтись одним только RC (и все наши примеры будут отлично на нём работать).
    Использованием системы hub + несколько RC мы хотим в будущем добиться более быстрого выполнения нескольких тестов, запуская их с помощью хаба параллельно на нескольких RC.
    Кроме того, если нам понадобится использовать RC под другой ОС (например, Linux, находящейся на другой машине) – нам не потребуется менять само приложение (selenium host:port ) – достаточно будет подключить эти RC к тому же хабу.

  3. Ctac says:

    А вы phpunit через ant не запускаете? А то, что-то никак с этим не могу справиться

  4. Dima says:

    >> А вы phpunit через ant не запускаете? А то, что-то никак с этим не могу справиться

    Нет, не запускаем.
    Возможно, вам пригодится эта ссылка: http://phing.info/trac/.
    “PHing Is Not GNU make; it’s a project build system based on Apache Ant. [...] Features include running PHPUnit and SimpleTest unit tests (including test result and coverage reports)”.

  5. Blockhead says:

    chto to ia ne poimu, u menia otkrito 3 CMD okna
    1) hub
    2) server
    3) dlia zapuska test
    Pitaus zapustit’ vash test i v okne vizu:
    C:\simple_test_php>phpunit loginLogoutTest.php

    C:\simple_test_php>

    i vse(( V chem mozet bit’ delo?

  6. Blockhead says:

    попытался запустить свой тест выдало:
    [java] Firefox 3 could not be found in the path!
    [java] Please add the directory containing ”firefox.exe” to your PATH environment
    [java] variable, or explicitly specify a path to Firef
    [java] *firefox3c:\blah\firefox.exe on session null

    Пытаюсь запустить все на x64, может изза этого такие ошибки?
    FF установлен не в Program Files а в Program Files(x86)

  7. Blockhead says:

    Разобрался, на x64 vista и 7 нужно FF прописать в PATH, т.к. просто его Selenium не найдет.
    И еще, ваш тест не работает уже. Свой тест из Selenium IDE запускался легко. А ваш валится. Возможноя неправильно подключил php4log.
    Я переименовал папку “src/main/php” в “php4log” и пихнул в папку с PHP тоесть адрес получился “C:/php/php4log/”, вроде все правильно. Попытался перенести настройки log4php из вашего теста в свой, тест валится как и ваш.

  8. bear says:

    Blockhead, спасибо за замечание по FF, добавлю в пост.

    Наш тест отлично работает, если следовать инструкции или здравому смыслу )
    В частности, вы правильно заметили, что дело может быть в log4php, потому что в нашей инструкции мы ставили его в папку log4php (а не php4log), и, если заглянуть в код теста, то можно увидеть такую строку:

    define(‘LOG4PHP_DIR’, “C:\\php\\log4php\\”);

  9. Светлана says:

    Добрый день!
    Спасибо большое за ваш проект, осваиваю по нему selenium и прелести автоматизироавнного тестирования :)
    Вот только столкнулась с такой бедой – при запуске RC, в окошке HUB’а появляется строка:
    Registered [RemoteControlProxy localhost:5565#false]

    С чем это может быть связано и как эту ошибку исправить?

  10. bear says:

    Светлана, я посмотрел – на последней версии Selenium Grid, которую можно скачать, у меня тоже есть этот самый #false (на старой – нет).
    Но, насколько я успел проверить, это никак не мешает Selenium Grid работать. Если у вас всё работает – думаю, не стоит обращать внимания на это )

  11. anton antenna says:

    Вот вы используете(-вали) ant для сборки, а в чем вы при этом писали сами тесты?
    По опыту чтения форумов, понял что какая-нибудь среда разработки – самый непопулярный способ организации проекта. Вы вот используете ant, в мануале по селениуму вообще используют maven.
    Что выбрать то? Голова кругом.

  12. bear says:

    Антон, сами тесты писали на PHP и на java.
    Для сборки и запуска java-тестов тоже использовали Ant (см. часть “от команды Java”).

    Я не совсем понял, что вы имеете в виду под “средой разработки”. В моём понимании “среда разработки” – это не способ организации проекта, это – всё то, что вы используете при разработке. Поэтому её нельзя использовать или нет, она просто есть, но может состоять из разных частей )

    Если вопрос про выбор ant/maven – вы можете их не использовать вообще. Эти инструменты служат для облегчения некоторых стандартных задач при сборке проекта, которые иначе придётся делать руками.

    Некоторые интегрированные среды разработки, типа NetBeans, тоже делают эти же стандартные вещи за вас, в том числе с помощью тех же Ant/Maven.