Перейти к содержимому

Публикации Jenka156

138 публикаций создано Jenka156 (учитываются публикации только с 24 апреля 2023)



#92109 selenium тесты и командная строка

Отправлено автор: Jenka156 05 августа 2011 - 05:58 в Selenium - Functional Testing

Здравствуйте. Недавно устроилась на работу. Сразу посадили за тестирование веб-интерфейса. Проблема в том, что в компании нет ни одного тестировщика, и помочь никто не может. Разобрала selenium и phpunit, установила, настроила. Написала первый тест в netbeans. Все работает.
А вопрос заключается в этом: можно ли как нибудь запускать готовые тесты (.php) из командной строки? Нигде толком информации по этому поводу нет.



#92343 еще раз про popUp окна

Отправлено автор: Jenka156 08 августа 2011 - 15:24 в Selenium - Functional Testing

здравствуйте! я новичок в тестировании. Тестирую веб-интерфейс и столкнулась вот с такой проблемой: при нажатии на кнопку вылетает сообщение "Сохранить полномочия пользователей?" и 2 кнопки: Да и Нет. проблема в том что я не могу нажать ни Да ни Нет, так как не получается переключиться на это окно. Сообщение не является просто alert(). Оно открывается как отдельная html страничка. Пробовала способ с переключением на это окно:
        $AllWindow = $this->getAllWindowTitles();//получаю массив имен окон
        $last_element = end($AllWindow);//записываю в переменную имя последнего окна
        $this->selectWindow($last_element);// переключаюсь на последнее окно
        
        $this->click($this->alert_button);// нажимаю кнопку "Да"
в результате получается ошибка:
ERROR: Element //input[@type='button' and @id='yes_bt'] not found.
т.е. не может найти эту кнопку "Да".
И не понятно даже, переключается ли на само окно или нет.
кто нибудь сталкивался с таким? какие еще есть способы решения?



#92395 еще раз про popUp окна

Отправлено автор: Jenka156 10 августа 2011 - 06:35 в Selenium - Functional Testing

с проблемой нахождения кнопки разобралась. он просто пытался на нее нажать еще до того как она появляется. но на этом проблема не решилась. теперь, когда выполняется тест, он пишет что нажал на кнопку, однако нажатия не происходит. и соответственно дальнейшие действия выполняются неправильно.
на этом скрине все видно:
Изображение

вот код этого окна:
<html><head>
<style type="text/css" media="screen">
	body	{background:buttonface; padding:0px; margin:0px;}
	#message, #btn	{text-align:center; width:300px; line-height:15px; font:10pt Tahoma, Arial, sansa-serif; padding-top:10px;}
	#btn	{}
	#yes_bt, #no_bt	{width:50px;}
</style>
<title>...</title>
<script language="javascript">
	var pushed = false;

	function init()
	{
		var yes_cap = opener.confirm_captions[0];
		var no_cap = opener.confirm_captions[1];
		var mess = opener.confirm_mess;
		
		document.getElementById('yes_bt').value = yes_cap;
		document.getElementById('no_bt').value = no_cap;
		document.getElementById('message').innerHTML = mess;
	}
	
	function yes()
	{
		opener.yes();
		pushed = true;
		window.close();
	}
	
	function no()
	{
		opener.no();
		pushed = true;
		window.close();
	}
	
	function check()
	{		
		if (!pushed)	{	opener.no();	}
	}
	
</script>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head>
<body onload="init()" onunload="check()">
<div id="message"></div>
<div id="btn">
		<input type="button" class="button" id="yes_bt" onclick="yes()">
		<input type="button" class="button" id="no_bt" onclick="no()">
</div>

</body></html>

а вот код, который я использую для перехода на окно и нажатия на кнопку ($alert_button = "//input[@type='button' and @id='yes_bt']"):
        $AllWindow = $this->getAllWindowTitles();
        $last_el = end($AllWindow);
        $this->selectWindow($last_el);
        sleep(5);
        $this->click($this->alert_button);

ну и вообще, окно в тесте выглядит очень странно (см. первый скрин). на самом деле, если проходит эти действия руками, это окно выглядит вот так:
Изображение



#92396 еще раз про popUp окна

Отправлено автор: Jenka156 10 августа 2011 - 07:05 в Selenium - Functional Testing

только что запустила тест в firefox, там все работает как надо!
скажите пожалуйста, кто сталкивался с таким? почему в хроме и опере не работает нормально?



#92414 элементы с одинаковыми характеристиками

Отправлено автор: Jenka156 10 августа 2011 - 13:34 в Selenium - Functional Testing

Здравствуйте. при тестировании приложения была обнаружена такая вот вещь:
нужно нажать на изображение скрепки чтоб прикрепить файл (см. скрин):
Изображение
проблема в том, что у всех скрепок на странице получаются одинаковые xpath и нажать на первую еще можно, а на вторую и последующие используюя только xpath не получится, так как нажимает снова на первую картинку.
вот код (первая скрепка):
<td class="x-grid3-col x-grid3-cell x-grid3-td-2 x-grid3-cell-last x-grid3-cell-selected" style="width: 34px; " tabindex="0">
  <div class="x-grid3-cell-inner x-grid3-col-2" unselectable="on">
    <form id="F259_10" name="F259_10" method="POST" action="/user/edituser/upload" class="file-upload-form">
      <input type="file" name="myfile" id="myfile259_10" size="1" class="file-uploader" title="Редактировать" onchange="uploadFile('259_10', 7);">
        <img src="/Skins/defaultskin/Images/addFile.png" class="file-upload-pict">
    </form>
  </div>
</td>

и вторая скрепка:
<td class="x-grid3-col x-grid3-cell x-grid3-td-2 x-grid3-cell-last " style="width: 34px; " tabindex="0">
  <div class="x-grid3-cell-inner x-grid3-col-2" unselectable="on">
    <form id="F260_10" name="F260_10" method="POST" action="/user/edituser/upload" class="file-upload-form">
      <input type="file" name="myfile" id="myfile260_10" size="1" class="file-uploader" title="Редактировать" onchange="uploadFile('260_10', 7);">
        <img src="/Skins/defaultskin/Images/addFile.png" class="file-upload-pict">
    </form>
  </div>
</td>

здесь отличаются только названия форм и input, но я пробовала связать с ними событие clickAt(), ничего не происходит.
подскажите, на что в таких случаях можно ориентироваться? какие способы клика на элемент еще можно использовать?



#92445 selenium тесты и командная строка

Отправлено автор: Jenka156 11 августа 2011 - 07:09 в Selenium - Functional Testing

а для чего нужно вообще

phpunit --configuration testconfig.xml

где про это можно прочитать?



#92471 PHPUnit + Selenium RC + NetBeans

Отправлено автор: Jenka156 11 августа 2011 - 10:26 в Selenium - Functional Testing

,



#92472 элементы с одинаковыми характеристиками

Отправлено автор: Jenka156 11 августа 2011 - 10:28 в Selenium - Functional Testing

Вот более общий кусок кода. такого хватит?
<div class="x-grid3-row ux-maximgb-tg-level-1   " style="width: 658px; ">
 <table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="width: 658px; ">
  <tbody>
   <tr>
    <td class="x-grid3-col x-grid3-cell x-grid3-td-name x-grid3-cell-first " style="width: 283px; " tabindex="0">
     <div class="x-grid3-cell-inner x-grid3-col-name" unselectable="on">
      АФайл
     </div>
    </td>
    <td class="x-grid3-col x-grid3-cell x-grid3-td-1 " style="width: 341px; " tabindex="0">
     <div class="x-grid3-cell-inner x-grid3-col-1" unselectable="on">
      &nbsp;
     </div>
    </td>
   <td class="x-grid3-col x-grid3-cell x-grid3-td-2 x-grid3-cell-last " style="width: 34px; " tabindex="0">
    <div class="x-grid3-cell-inner x-grid3-col-2" unselectable="on">
     <form id="F259_10" name="F259_10" method="POST" action="/user/edituser/upload" class="file-upload-form">
      <input type="file" name="myfile" id="myfile259_10" size="1" class="file-uploader" title="Редактировать" onchange="uploadFile('259_10', 7);">
       <img src="/Skins/defaultskin/Images/addFile.png" class="file-upload-pict">
     </form>
    </div>
   </td>
  </tr>
  <tr class="x-grid3-row-body-tr" style=""><td colspan="3" class="x-grid3-body-cell" tabindex="0" hidefocus="on"><div class="x-grid3-row-body">
 </div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="x-grid3-row ux-maximgb-tg-level-1  x-grid3-row-alt" style="width: 658px; ">
 <table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="width: 658px; ">
  <tbody>
   <tr>
    <td class="x-grid3-col x-grid3-cell x-grid3-td-name x-grid3-cell-first " style="width: 283px; " tabindex="0">
     <div class="x-grid3-cell-inner x-grid3-col-name" unselectable="on">
      ВФайл
     </div>
    </td>
   <td class="x-grid3-col x-grid3-cell x-grid3-td-1 " style="width: 341px; " tabindex="0">
    <div class="x-grid3-cell-inner x-grid3-col-1" unselectable="on">
     &nbsp;
    </div>
   </td>
   <td class="x-grid3-col x-grid3-cell x-grid3-td-2 x-grid3-cell-last " style="width: 34px; " tabindex="0">
    <div class="x-grid3-cell-inner x-grid3-col-2" unselectable="on">
     <form id="F260_10" name="F260_10" method="POST" action="/user/edituser/upload" class="file-upload-form">
      <input type="file" name="myfile" id="myfile260_10" size="1" class="file-uploader" title="Редактировать" onchange="uploadFile('260_10', 7);">
      <img src="/Skins/defaultskin/Images/addFile.png" class="file-upload-pict">
     </form>
    </div>
   </td>
  </tr>
  <tr class="x-grid3-row-body-tr" style=""><td colspan="3" class="x-grid3-body-cell" tabindex="0" hidefocus="on"><div class="x-grid3-row-body">
</div>
</td>
</tr>
</tbody>
</table>
</div>



#92489 элементы с одинаковыми характеристиками

Отправлено автор: Jenka156 11 августа 2011 - 13:33 в Selenium - Functional Testing

Спасибо за помощь, для картинки xpath написала. теперь тест находит ее. но только при нажатии ничего не происходит почему-то. Должно появиться окно загрузки файла, но оно не появляется.
я пробовала и click() и clickAt и вот этот способ:
        $this->mouseDownAt($this->clip1, "4,4");
        $this->mouseUpAt($this->clip1, "4,4");
окно все равно не появляется...

сейчас пробовала выполнить эти действия в IDE. там на событие клика по скрепке не появляется никакой команды, хотя окно загрузки файла открывается. почему так?



#92509 элементы с одинаковыми характеристиками

Отправлено автор: Jenka156 12 августа 2011 - 05:27 в Selenium - Functional Testing

ну вот:

Изображение

получается там, куда указывает стрелка должна быть команда click и xpath скрепки, а ее нет. хотя у меня открывается окно загрузки файла, я выбираю файл, жму ОК и вижу уже следующую команду по добавлению имени файла в форму.

Изображение



#92519 элементы с одинаковыми характеристиками

Отправлено автор: Jenka156 12 августа 2011 - 06:51 в Selenium - Functional Testing

да, форма загрузки стандартная. и проверить, загрузился ли файл, могу сохранив пользователя и потом посмотрев его профиль еще раз. там название файла будет в виде ссылки. нажимаешь на нее и файл скачивается. по идее здесь ошибок быть не должно и этот этап можно пропустить?



#92695 свои функции в тестах на php

Отправлено автор: Jenka156 16 августа 2011 - 18:22 в Selenium - Functional Testing

Здравствуйте! я недавно начала писать тесты на пхп и столкнулась вот с такой задачей: в коде есть определенный набор строчек, который повторяется во многих частях теста (например раскрытие всего дерева папок). Так вот чтоб не повторять эти блоки постоянно я хотела написать функцию. Но проблема в том, что я не могу написать функцию, так как внутри этой функции не определяются нужные методы типа $this->clickAt() и тд. NetBeans даже не видит эту функцию и я не могу вызвать ее. создаю функцию в блоке теста:

function testMyTestCase()
{...}

Может это неправильно? Подскажите пожалуйста, в каком блоке вообще можно создавать функции свои и как?



#92871 xpath для элементов, которые постоянно меняются местами

Отправлено автор: Jenka156 19 августа 2011 - 06:46 в Selenium - Functional Testing

Здравствуйте! Задача вот какая: есть два input элемента на странице. Сначала, когда страница открывается, они вообще отсутствуют в коде. Добавляются в код динамически при щелчке на место на странице, на котором они по идее находятся. Проблема в том, что идентифицировать эти input по каким то уникальным параметрам невозможно. параметр name у них вообще пустой, а id постоянно меняется. Вот код (это уже подгруженные элементы):

<div class="x-grid3-scroller" id="ext-gen63" style="overflow-x: hidden; width: 1258px; height: 347px;">
<div class="x-layer x-editor x-small-editor x-grid-editor" id="ext-comp-1026" style="overflow: auto; position: absolute; z-index: 11000; visibility: hidden; left: -10000px; top: -10000px;">
  <input type="text" name="" id="ext-comp-1025" autocomplete="off" size="20" class="x-form-text x-form-field" style="width: 631px; height: 16px;"></div>
<div class="x-layer x-editor x-small-editor x-grid-editor" id="ext-comp-1036" style="overflow: auto; position: absolute; z-index: 11000; visibility: visible; left: 535px; top: 43px;">
  <input type="password" name="" id="ext-comp-1035" autocomplete="off" size="20" class="x-form-text x-form-field" style="width: 631px; height: 16px;">
</div>
</div>

Пробовала идентифицировать через родителей:
//div[@class='x-grid3-scroller']//div[@class='x-layer x-editor x-small-editor x-grid-editor'][1]//input
Но проблема обнаружилась в том, что если в разной последовательности эти элементы подгружаются в код, то и очередность у них разная. Сейчас например div id="ext-comp-1026", в котором находится нужный input стоит первым, но может быть и вторым, если он подгрузился в код вторым. И в тесте происходит ошибка, потому что нужные данные не туда вводятся.
Помогите, пожалуйста, разобраться с этим



#92881 xpath для элементов, которые постоянно меняются местами

Отправлено автор: Jenka156 19 августа 2011 - 11:10 в Selenium - Functional Testing

ааа, простите, забыла сказать... я в примере привела не все инпуты, там их больше. вот так выглядит полная картина:

<div class="x-layer x-editor x-small-editor x-grid-editor" id="ext-comp-1026" style="overflow: auto; position: absolute; z-index: 11000; visibility: visible; left: 534px; top: 22px;">
<input type="text" name="" id="ext-comp-1025" autocomplete="off" size="20" class="x-form-text x-form-field" style="width: 632px; height: 16px;">
</div>
<div class="x-layer x-editor x-small-editor x-grid-editor" id="ext-comp-1036" style="overflow: auto; position: absolute; z-index: 11000; visibility: hidden; left: -10000px; top: -10000px;">
<input type="password" name="" id="ext-comp-1035" autocomplete="off" size="20" class="x-form-text x-form-field" style="width: 331px; height: 16px;">
</div>
<div class="x-layer x-editor x-small-editor x-grid-editor" id="ext-comp-1028" style="overflow: auto; position: absolute; z-index: 11000; visibility: hidden; left: -10000px; top: -10000px;">
<input type="text" name="" id="ext-comp-1027" autocomplete="off" size="20" class="x-form-text x-form-field" style="text-align: left; width: 331px; height: 16px;">
</div>
<div class="x-layer x-editor x-small-editor x-grid-editor" id="ext-comp-1038" style="overflow: auto; position: absolute; z-index: 11000; visibility: hidden; left: -10000px; top: -10000px;">
<input type="text" name="" id="ext-comp-1037" autocomplete="off" size="20" class="x-form-text x-form-field" style="width: 331px; height: 16px;">
</div>
<div class="x-layer x-editor x-small-editor x-grid-editor" id="ext-comp-1040" style="overflow: auto; position: absolute; z-index: 11000; visibility: hidden; left: -10000px; top: -10000px;">
<input type="text" name="" id="ext-comp-1039" autocomplete="off" size="20" class="x-form-text x-form-field" style="width: 331px; height: 16px;">
</div>
<div class="x-layer x-editor x-small-editor x-grid-editor" id="ext-comp-1040" style="overflow: auto; position: absolute; z-index: 11000; visibility: hidden; left: -10000px; top: -10000px;">
<input type="text" name="" id="ext-comp-1039" autocomplete="off" size="20" class="x-form-text x-form-field x-form-num-field" style="text-align: left; width: 331px; height: 16px;">
</div>
<div class="x-layer x-editor x-small-editor x-grid-editor" id="ext-comp-1030" style="overflow: auto; position: absolute; z-index: 11000; visibility: hidden; left: -10000px; top: -10000px;">
<input type="text" name="" id="ext-comp-1029" autocomplete="off" size="20" class="x-form-text x-form-field x-form-num-field" style="text-align: left; width: 331px; height: 16px;">
</div>

Вот например 2 последних инпута отвечают за домашний (id="ext-comp-1039") и рабочий (id="ext-comp-1029") телефоны. Сейчас они расположены в коде друг за другом, потому что нажатия проводились последовательно сначала на поле домашнего телефона, потом на поле рабочего телефона. Но если сделать наоборот, то в коде сначала будет id="ext-comp-1029", а потом id="ext-comp-1039". Вот пример

<div class="x-layer x-editor x-small-editor x-grid-editor" id="ext-comp-1030" style="overflow: auto; position: absolute; z-index: 11000; visibility: hidden; left: -10000px; top: -10000px;">
<input type="text" name="" id="ext-comp-1029" autocomplete="off" size="20" class="x-form-text x-form-field x-form-num-field" style="text-align: left; width: 331px; height: 16px;">
</div>
<div class="x-layer x-editor x-small-editor x-grid-editor" id="ext-comp-1040" style="overflow: auto; position: absolute; z-index: 11000; visibility: hidden; left: -10000px; top: -10000px;">
<input type="text" name="" id="ext-comp-1039" autocomplete="off" size="20" class="x-form-text x-form-field x-form-num-field" style="text-align: left; width: 331px; height: 16px;">
</div>

Родители у них одинаковые (все атрибуты одинаковые), а следующий родитель общий идет. Получается что они различаются только айдишниками, которые постоянно меняются при перезагрузке страницы



#92899 еще раз про sessionId should not be null; has this session been starte

Отправлено автор: Jenka156 19 августа 2011 - 13:43 в Selenium - Functional Testing

у меня есть 2 класса в файле конфигурации, который подключается к файлу теста require_once. один класс отвечает за подразделения (Department) и наследуется в кейсах для подразделений. другой отвечает за пользователей (Users) в этих подразделениях и наследуется в кейсах по пользователям.

Проблема вот в чем: когда я пишу тело теста, который работает с пользователями, то в нем перед тем как работать с пользователями мне нужно создать подразделение. я создаю экземпляр класса для работы с подразделениями.
пишу это в теле функции теста testMyTestCase():

$dep = new Department();

$this->open("/");
$this->LoginUser("admin", "admin"); // вход в систему
$dep->CreateDepartment("Подразделение 1"); // вызов метода класса Department

Ошибок никаких НетБинс не показывает. когда запускаю тест, он залогинивается под администратором и потом сразу выдает ошибку:
PHPUnit_Framework_Exception: Response from Selenium RC server for click(//div[@id='instr']).
ERROR Server Exception: sessionId should not be null; has this session been started yet?.

В чем ошибка? без экземпляра класса тест работает...



#92902 еще раз про sessionId should not be null; has this session been starte

Отправлено автор: Jenka156 19 августа 2011 - 15:14 в Selenium - Functional Testing

что значит "поле типа Selenum"?

и почему еще он ругается, что sessionId should not be null?
я так понимаю, что он, создавая экземпляр класса, пытается создать новую сессию???



#92953 еще раз про sessionId should not be null; has this session been starte

Отправлено автор: Jenka156 22 августа 2011 - 05:48 в Selenium - Functional Testing

спасибо! ошибку вообщем то поняла) сейчас буду разбираться



#92977 увеличить время ожидания ответа

Отправлено автор: Jenka156 22 августа 2011 - 12:15 в Selenium - Functional Testing

для ожидания окончания загрузки страницы я использую метод waitForPageToLoad().
время я выставляю 2 минуты. но иногда бывает такое что ждать нужно и 4 минуты.

Так вот проблема в том, что сколько бы я не выставляла в параметре метода waitForPageLoad(), тест прерывается через полторы минуты ожидания с ошибкой: нет ответа от селениум сервера. если страница загружается быстрее чем полторы минуты, то все работает нормально.

может кто нибудь знает где можно еще выставлять время ожидания ответа от страницы для сервера? может где то в исходниках можно поменять его?



#92979 увеличить время ожидания ответа

Отправлено автор: Jenka156 22 августа 2011 - 12:23 в Selenium - Functional Testing

это эквивалентно sleep(milliseconds)? я таким пробовала пользоваться, но мне нужно именно дождаться окончания загрузки страницы. потому что одна и та же страница может грузиться разное количество времени. и получается что в одном сеансе она грузится 30 секунд, а в другой раз будет грузиться около 4 минут....



#93004 как найти textarea?

Отправлено автор: Jenka156 23 августа 2011 - 08:36 в Selenium - Functional Testing

Не могу подобраться к элементу textarea. через IDE его не видно, какие бы я xpath не прописывала. в коде оно отображается серым цветом. Не очень понимаю что это значит.

Изображение

как к нему можно обратиться и напечатать там что нибудь?



#93044 увеличить время ожидания ответа

Отправлено автор: Jenka156 23 августа 2011 - 12:57 в Selenium - Functional Testing

не могу найти в php эту функцию.... а какие еще варианты есть?

после 1,5 минуты вот какая ошибка: PHPUnit_Framework_Exception: Could not connect to the Selenium RC server

и тогда еще такой вопрос, я просто не совсем понимаю, почему сколько бы времени я ни указывала в параметре waitForPageToLoad(), все равно больше 1.5 минуты ожидание не работает?



#93053 selenium не видит новое окно

Отправлено автор: Jenka156 23 августа 2011 - 13:42 в Selenium - Functional Testing

в программе при нажатии одной кнопки происходит открытие нового окна со списком пользователей. я не могу переключиться на это окно, пишет что оно не найдено. пробовала даже выводить массив всех окон, которые видит селениум:

print_r($allWindow = $this->getAllWindowTitles());

но нужного мне окна нет в возвращаемом массиве.
это может быть потому, что оно открывается в новой вкладке? я слышала что селениум не работает с вкладками....

а если тогда в firefox, например, отключить опцию "Вместо новых окон открывать новые вкладки", это не поможет?



#93056 увеличить время ожидания ответа

Отправлено автор: Jenka156 23 августа 2011 - 13:53 в Selenium - Functional Testing

ооо.... спасибо большое! видимо я как то невнимательно искала в инете. да и нетбинс мне этого метода не показывает...



#93080 selenium не видит новое окно

Отправлено автор: Jenka156 24 августа 2011 - 05:34 в Selenium - Functional Testing

что то так тоже не работает. все равно в возвращаемом массиве окон, которые видит селениум нет нужного окна.



#93081 selenium + phpunit тесты

Отправлено автор: Jenka156 24 августа 2011 - 05:48 в Selenium - Functional Testing

а метод getConfirmation() не подходит?