t.me/atinfo_chat Telegram группа по автоматизации тестирования

Обработка Alert в RC


(dguminsk) #1

Всем привет. Я только начал познавать автоматизацию в RC (Java). Столкнулся с проблемой обработки Alert. Надеюсь на вашу помощь.

Исходные данные - есть страница с формой Логин, пароль, мыло и кнопкой сабмит. После ввода всех данных и нажатия кнопки выскакивает Alert.

задача - считать алерт и сравнить его с некоторым текстом. Т.е. если они совпадают, то тест выполнен правильно. Уже вторые сутки бьюсь, нифига не выходит, тесты не проходят. Т.е. не видит алерта и все.

В Eclipse мой код выглядит так:

{syntaxhighlighter brush: java;fontsize: 100; first-line: 1; }package com.example.tests;

import com.thoughtworks.selenium.*;

import java.util.regex.Pattern;

public class test1 extends SeleneseTestCase {

public void setUp() throws Exception {

	setUp("C:\testpage.html", "*googlechrome");

}

public void testTest1() throws Exception {

	selenium.open("/");

	selenium.type("name=email", "test@test");

	selenium.type("name=login", "12345");

	selenium.type("name=pass", "12345");

	selenium.click("css=input[type=\"submit\"]");

	selenium.waitForCondition("selenium.isAlertPresent()", "1000");

	assertTrue( selenium.isAlertPresent() );

    assertEquals( selenium.getAlert(), " Недопустимая длина поля " );

	}

}

}{/syntaxhighlighter}

package com.example.tests;
import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;
public class test1 extends SeleneseTestCase {
public void setUp() throws Exception {
setUp(“http://test.artox.by/”, “*googlechrome”);
}
public void testTest1() throws Exception {
int loopvar = 1;
do {
selenium.open("/");
selenium.type(“name=email”, “test@test”+ loopvar);
selenium.type(“name=login”, “12345”);
selenium.type(“name=pass”, “12345”);
selenium.click(“css=input[type=“submit”]”);
selenium.waitForCondition(“selenium.isAlertPresent()”, “1000”);
assertTrue( selenium.isAlertPresent() );
        assertEquals( selenium.getAlert(), “This is Alert” );
loopvar = loopvar + 1;
}
while (loopvar <= 10);
}
}

 

 

Привожу листинг тестируемой страницы: 

{syntaxhighlighter brush: xml;fontsize: 100; first-line: 1; }<HTML>
<META http-equiv=Content-Type content=“text/html; charset=windows-1251”>
<head>
</head>
<body>
<form id=“myForm” action=“add.php” method=“post”>
<table>
<tr><td>email</td><td><input type=“text” name=“email”></td></tr>
<tr><td>Логин</td><td><input type=“text” name=“login”></td></tr>
<tr><td>Пароль</td><td><input type=“text” name=“pass”></td></tr>
</table>
<input type=“submit” value=“Регистрация” />

&lt;/form&gt;
&lt;div id="result" style="padding:5px;"&gt;
&lt;/div&gt;

&lt;script type="text/javascript"&gt;
parts=String(document.location).split("?",2)[1].split("&amp;");
GET={};
for (i=0; i&lt;parts.length; i++) {
 curr = parts[i].split('=');
 GET[curr[0]] = curr[1];

 if (curr[1] == 1) { alert('Вы успешно зарегестрированны')}
 if (curr[1] == 2) { alert('Неверно ведён Логин')}
 if (curr[1] == 3) { alert('Неверно ведён Пароль')}
 if (curr[1] == 4) { alert('Заполните поле Логин')}
 if (curr[1] == 5) { alert('Неправильно введён email')}
 if (curr[1] == 6) { alert('Введите все поля')}
 if (curr[1] == 7) { alert('Ошибка!')}
 if (curr[1] == 8) { alert('Вы уже зарегестрированы')}
 if (curr[1] == 9) { alert('Недопустимая длина поля')}
}

&lt;/script&gt; 

&lt;/script&gt;
&lt;/body&gt;

</html>{/syntaxhighlighter}


(Mykhailo Poliarush) #2

скопировал ваш html код и у меня не всплывает алерт

также по коду не вижу, где javascript вызывается, т.е. точка входа

уточните пожалуйста


(Mykhailo Poliarush) #3

тут есть еще одна особенность, если алерт загружается до onLoad() события, то вы не сможете его перехватить

может быть у вас этот случай, так javascript находиться в body элементе

загрузка страницы идет сверху вниз, т.е. javascript выполниться, а потом body и только тогда страница полностью загрузиться 

увы Selenium RC не умеет это обрабатывать


(dguminsk) #4

Приведу тогда не листинг, а готовую страницу: http://test.artox.by

Я пытаюсь выловить и сравнить алерты с данной страницы. Возможно ли это?


(Mykhailo Poliarush) #5

с помощью Selenium RC это сделать невозможно, javascript отрабатывает до полной загрузки страницы

тут надо подключать AutoIt для решения этой проблемы


(dguminsk) #6

Большое спасибо за ответ, а то уже всю голову сломал. 


(Дмитрий Жарий) #7
Возможно, Вам будет интересен следующий топик, тут описывается обработка File Upload, при помощи Robot:
upload file error
http://automated-testing.info/forum/upload-file-error#comment-1100
+ Большинство людей, кого я знаю, обрабатывают сообщения от браузера при помощи AutoIt либо AutoHotkey.

Возможно, Вам будет интересен следующий топик, тут описывается обработка File Upload,

при помощи Robot: upload file error

 

+ Большинство людей, кого я знаю, обрабатывают сообщения от браузера при помощи AutoIt либо AutoHotkey.


(Mykhailo Poliarush) #8

ламать голову не надо :) , просто пишите на форум, мы вам коллективно поможем


(d3unka) #9

Это очень грубая ошибка, делать такой вызов JS

Лучше сделаей вызов функции в теге form, при событии onSubmit.

Например onsubmit="return formCheck(this);" А JS поместите в эту функцию. Тогда Alert вызовется еще до сабмита вашей формы и Selenium сможет его нажать.