* работа с элементами
* работа с ajax
* динамическая подгрузка скриптов
* динамическое создание элементов
* динамическая подгрузка css стилей
* отправка файлов через ajax
* отправка формы через ajax
* работа с cookie
* работа с событиями
* работа с браузером, экраном, числами, элементами
$$() - получение доступа к элементам
$$a() - работа с ajax
$$c() - работа с cookie
$$e() - работа с событиями
$$f() - отправка форм через ajax
$$i() - динамическое подключение скриптов стилей и создание элементов
$$r() - работа с событием window.onload
$$s() - набор полезных функций по работе с экраном, мышью, браузером, элементами, числами и т.д.
<form id="test_form" method="post" enctype="multipart/form-data">
<input type="file" name="upload_file" />
</form><br /><br />
<div id="status">Тут будет статус загрузки</div><br /><br />
<div onclick="SendFile();">Отправить файл через Ajax</div><br />
Пишем для него функцию отправки
<script type="text/javascript">
function SendFile() {
$$f({
formid:'test_form',//id формы
url:'ajax.php',//адрес на серверный скрипт который будет принимать файл
onstart:function () {//действие при начале отправки файла на сервер
$$('status','начинаю отправку файла');
},
onsend:function () {//действие по окончании отправки файла на сервер
$$('status',$$('status').innerHTML+'<br />файл успешно загружен');
}
});
}
</script>
Чтобы получить ответ от сервера, содержимое файла ajax.php может быть таким:
<?php
if($_FILES['upload_file']['size']>0) {
echo '
<script type="text/javascript">
var elm=parent.window.document.getElementById("status");
elm.innerHTML=elm.innerHTML+"<br />Получен файл '.$_FILES['upload_file']['name'].' размером '.$_FILES['upload_file']['size'].' байт";
</script>
';
}
?>
Для проверки поддерживает и браузер кукисы можно использовать следующий код:
<script type="text/javascript">
//проверяю поддержку cookie браузером
if($$c.test()) {
alert('браузер поддерживает cookie');
}
else {
alert('браузер не поддерживает cookie');
}
</script>
<form id="test_form" action="comment.php" method="post">
Имя: <input type="text" name="name" /><br />
Комментарий: <textarea name="comment"></textarea>
</form><br />
<div id="result">Тут будет статус загрузки</div><br /><br />
<div onclick="SendForm();">Отправить форму через Ajax</div><br />
Ее можно отправить на сервер через AJAX с помощью кода
<script type="text/javascript">
function SendForm() {
//отправка файла на сервер
$$f({
formid:'test_form',//id формы
url:'comment.php',//адрес на серверный скрипт, такой же как и в форме
onstart:function () {//действие при начале отправки
$$('result','начинаю отправку');//в элемент с id="result" выводим результат
},
onsend:function () {//действие по окончании отправки
$$('result',$$('result').innerHTML+'<br />комментарий успешно отправлен');//в элемент с id="result" выводим результат
}
});
}
</script>
Чтобы получить ответ от сервера, содержимое файла comment.php может быть таким:
<?php
if(isset($_POST['name'])) {
echo'
<script type="text/javascript">
var elm=parent.window.document.getElementById("result");
elm.innerHTML=elm.innerHTML+"<br />Получено имя '.str_replace("\r","",str_replace("\n","<br />",htmlspecialchars(stripslashes($_POST['name'])))).' с текстом '.str_replace("\r","",str_replace("\n","<br />",htmlspecialchars(stripslashes($_POST['comment'])))).' ";
</script>
';
}
?>
Чтобы динамически подключить скрипт, а также после его загрузки выполнить из него код, нужно выпонить следующий код
<script type="text/javascript">
function GetScript() {
//Подключаю внешний скрипт и запускаю из него метод
$$i({
create:'script',
attribute: {
'type':'text/javascript',
'src':'http://nagon.net/js/NRMSLib.js'//адрес на подключаемый скрипт
},
insert:$$().body,
onready:function() {
modules.sound.start();//этот метод запускается уже из подключенного скрипта
}
});
}
GetScript();
</script>
Дописываю вышепоказанный код, теперь он будет запускаться сразу после загрузки сайта:
<script type="text/javascript">
//выполнение кода только после загрузки документа
$$r(function() {
//Подключаю внешний скрипт и запускаю из него метод
$$i({
create:'script',
attribute: {
'type':'text/javascript',
'src':'http://nagon.net/js/NRMSLib.js'//адрес на подключаемый скрипт
},
insert:$$().body,
onready:function() {
modules.sound.start();//этот метод запускается уже из подключенного скрипта
}
});
});
</script>
<div id="result">Тут будет ответ от сервера</div><br /><br />
<div onclick="SendGet();">Отправить GET запрос через Ajax</div><br />
<div onclick="SendPost();">Отправить POST запрос через Ajax</div><br />
<div onclick="SendHead();">Отправить HEAD запрос через Ajax</div><br />
Пишем код
<script type="text/javascript">
function SendGet() {
//отправляю GET запрос и получаю ответ
$$a({
type:'get',//тип запроса: get,post либо head
url:'ajax.php',//url адрес файла обработчика
data:{'q':'1'},//параметры запроса
response:'text',//тип возвращаемого ответа text либо xml
success:function (data) {//возвращаемый результат от сервера
$$('result',$$('result').innerHTML+'<br />'+data);
}
});
}
function SendPost() {
//отправляю POST запрос и получаю ответ
$$a({
type:'post',//тип запроса: get,post либо head
url:'ajax.php',//url адрес файла обработчика
data:{'z':'1'},//параметры запроса
response:'text',//тип возвращаемого ответа text либо xml
success:function (data) {//возвращаемый результат от сервера
$$('result',$$('result').innerHTML+'<br />'+data);
}
});
}
function SendHead() {
//отправляю HEAD запрос и получаю заголовок
$$a({
type:'head',//тип запроса: get,post либо head
url:'ajax.php',//url адрес файла обработчика
response:'text',//тип возвращаемого ответа text либо xml
success:function (data) {//возвращаемый результат от сервера
$$('result',$$('result').innerHTML+'<br />'+data);
}
});
}
</script>
Содержимое файла ajax.php
<?php
if(isset($_GET['q'])) {
header("Content-type: text/txt; charset=UTF-8");
if($_GET['q']=='1') {
echo 'запрос GET успешно обработан, q = 1';
}
else {
echo 'карявый GET запрос';
}
}
if(isset($_POST['z'])) {
header("Content-type: text/txt; charset=UTF-8");
if($_POST['z']=='1') {
echo 'запрос POST успешно обработан, z = 1';
}
else {
echo 'карявый POST запрос';
}
}
?>
Остальные примеры смотрите на оф сайте фреймворка
Нужна помощь в автоматизации тестирования
2012-02-05 22:51
Добрый вечер!
Я два месяца работаю тестировщиком (manual testing). Передо мной стоит цель автоматизировать процесс. Как это делать никто не представляет и что конкретно от меня требуется понять сложно. Занимаемся тестированием банковского ПО. Используем Rational ClearQuest, ClearCase, RequisitePro. Для автоматизации планируется использовать TestManager и Robot. Вопрос в том насколько эти два продукта являются подходящими? (вообще ислозовать нужно только продукты Rational)
Вообще выполняется только функциональное тестирование (из-за отсутствия достаточного количества тестеров), в будущем хотелось бы еще делать нагрузочное и стрессовое. Тест-кейсы или тест-планы не пишутся. И еще более мне интересно с чего начинать автоматизацию: пробовать какие-то определенные операции автоматизировать, чтоб удобней было (к примеру заполнение каких-то формочек или создание документов, например), или сразу более крупные задачи?
Очень жду ваших советов.
Юля Нечаева: Команда, где каждый лидер
2012-02-06 09:38
Пока идет подготовка к очередной конференции серии SQA Days, мы продолжаем публиковать избранные выступления прошедшей, десятой конференции.
Сегодня мы предлагаем вам послушать рассказ Юли Нечаевой о том, как она практически с нуля поднимала тестирование в отдельно взятой компании. Причем речь вовсе не о том, как в компанию был внедрён какой-то "процесс" или "инструмент", а о том, как им удалось сделать так, чтобы людям было интересно работать, а компания получала максимальную пользу от их фантастической эффективности труда.
HP Quality Center 10
2012-02-06 11:10
После создания новой базы, из старой перенесли часть методик в Test Plan, в дефектах появились старые дефекты, с прошлого релиза без линков и заполненного поля: Detected in Cycle, Status = New, Статус дефекта и все остальные поля без изменений. Посмотрела в старой базе, там эти дефекты тоже не прилинкованы.
Подскажите, пожалуйста, откуда могли взяться?
if Sys.Process('ISR').Window('#32770', 'Внимание', 1).exists then Sys.Process('ISR').Window('#32770', 'Внимание', 1).Window('Button', 'ОК', 1).click;
Работает,но в этом случае скрипт ждёт окно 10 секунд, а если оно не появляется, выводит в лог ошибку.
Способ 2
if Sys.Process('ISR').WaitWindow('#32770', 'Внимание', 1000,1).exists then Sys.Process('ISR').Window('#32770', 'Внимание', 1).Window('Button', 'ОК', 1).click;
Ждёт одну секунду, но не закрывает заданное окно в случае его появления.
Есть одна проблема: нужно в JIRA подключить highlight(подсветку) той строки, над которой находится курсор мыши. Это нужно, т.к. удобно видеть какой тикет выделен, а тикетов в проектах дофига и без подсветки сложно уловить какой сейчас смотрится )))
Ещё знаю что есть такая штука: когда открываем скриншот - чтобы он открывался не в новой вкладке, а в той же самой, но ввиде lighbox'а с кнопкой 'закрыть'. При этом мы остаёмся в открытом окне тикета - очень удобно.
Догадываюсь, что это делается при помощи плагинов к JIRA, но, к сожалению, не знаю что это за плагины.
Помогите пожалуйста, кто сталкивался ?
Скучно ли работать тестировщиком?
2012-02-06 13:10
Привет друзья. Я начинающий разработчик. 5 лет делал сайты на php+mysql в основном на разных cms. Год назад работал java программистом. Сам не пойму как устроился, видимо очень хотел, глаза сияли прям. И без опыта работы меня взяли в Москве на 60000р. Щастье мое длилось не долго, пару месяцев, когда они поняли кого взяли, то есть я посмотрел десяток курсов и ничего не делал. Соответственно, когда мне сказали на делай по технологии JEE я чуть со стула не упал. В общем как ни старался, учил все на ходу, но тестовое задание я провалил. После этого понял, что java не мое. Слишком правильная и замудренная что ли, хотя просторы у нее большие, и иногда чуть ли не слеза на глазах, когда хочется видить себя java программистом. Но видимо, нужно потратить ни один год на обучение, а кушать хочется уже сейчас. В общем, после этого я где-то пол года скитался, искал свой язык, что-то среднее между php и java. Все описывать не буду, в общем перепробовал множество. Из всего этого мне понравились 2 языка. Python и C#. C# очень похоже на java, но лучше подойдет для начинающего. Питон намного проще, после java он мне казался как html. Что приглянуло, он независим. Но пока я его отложил на полку. В общем занялся ДОт нет. Пошло очень хорошо, просто замечательно, после JAVA. В общем на данный момент я освоил(только язык) c# и java на хорошем уровне, чтобы пойти работать. 80% где-то. ну не знаю, прям чувствую что готов. И начал ездить по собеседованиям.
Первое было по java как ни странно, в общем сделал 4 задания по инету, не без помощи форумов. Приехал прошел тест. Потом в комнату где меня 2 мужика и тетка, можно сказать прям допрашивали. И когда я им сказал правду, что учился. Они в лицо мне отказали, и сказали мол еще поучись.
Второе C# начинающий уровень. Приехал нормально пообщался, но видимо не судьба. Либо не понравился, что из java перешел. В общем не знаюд. Третье вообще ужас, приехал в такую ж.. извиняюсь, когда все о себе рассказал, я просил всего 30000р копейки для меня. Мне сказали, за что вам вообще платить? за учебу? В общем, я развернулся, сказав, что у меня полно предложений и уехал. Они хотели, что я им платил. Это вообще смешно.
Если честно, реально еще есть 3 предложения. Но я уже честно не знаю. Мне нравится программировать, но в первую очередь я рассматриваю работу в it как хороший трамплин начать новую жизнь заграницей. Так как в России я еще пару лет точно не протяну. Так вот вопрос. Ребят, скажите. Не скучно ли вам работать тестировщиками? Не жалеете, что сделали такой выбор?
Я ничего не хочу сказать плохого про эту профессию, но мне кажется что она близка к программированию, и в моем случае найти работу и начать карьеру проще. Так как когда я разместил резюме, мне с предложениями работать тестировщиком звонили чаще, чем по разработке. Хотя я ничего не указывал о тестировании. Или бесплатный сэр только в мышеловке?
Вообще моя цель по жизни насчет работы такая, 1)легко устроится заграницей 2)найти красивый независимый язык, написать на нем крутой проект и чтобы потом никто не присосался,( если он взлетит к небесам как фейсбук) мол отсегивай, а то закроем. В общем выслушаю всю критику, можете смело писать все, что думаете по этому поводу. Я просто застрял, мне нужен сильный пинок. Спасибо
После применения Watir пропадают стили
2012-02-06 13:52
Здравствуйте. Подскажите, пожалуйста, кто сталкивался с подобной проблемой. Заполняю страницу регистрации (https://testeachersonline.com/register.html) при помощи теста, запускаемого через Watir. Запускаю файл с расширением rb через консоль, все формы заполняются, при переходе на страницу предпросмотра пропадают стили на странице (аттач). При прохождении теста вручную такого не происходит. В чем может быть проблема.
Работа для специалистов по web, QA-тестированию
2012-02-06 14:47
Благотворительному фонду требуются специалисты для тестирования социальной сети помощи людям "happylives.ru" на безвозмездной основе. Тестирование проводится в системе багтрекер, на установленном сервере. Все кто желают получить опыт работы тестирования в крупном проекте и получить при необходимости рекомендацию на данном сайте или другой странице - прошу писать на адрес: vk1982@mail.ru . Особыми рекомендациями можем отмечать специалистов, умеющих работать по ТЗ или выполнять индивидуальные задания.
jenkins не запускает тесты
2012-02-06 16:27
Здравствуйте! я пытаюсь запустить тест через jenkins.
при запуске в консоли jenkins появляется такая ошибка:
[jmeter] Error in NonGUIDriver java.lang.NullPointerException
и это в самом начале. тест даже не запускается.
в jmeter.log вот такая информация:
2012/02/06 16:20:06 INFO - jmeter.JMeter: Version 2.0.1
2012/02/06 16:20:06 INFO - jmeter.JMeter: java.version=1.6.0_22
2012/02/06 16:20:06 INFO - jmeter.JMeter: Loading file: /var/lib/jenkins/home/jobs/Perfomance_test/workspace/test/Test1.jmx
2012/02/06 16:20:06 ERROR - jmeter.save.SaveService: Problem loading part of file org.apache.avalon.framework.configuration.ConfigurationException: No attribute named "class" is associated with the configuration element "testelement" at -
at org.apache.avalon.framework.configuration.DefaultConfiguration.getAttribute(DefaultConfiguration.java:279)
at org.apache.jmeter.save.SaveService.createTestElement(SaveService.java:966)
at org.apache.jmeter.save.SaveService.generateNode(SaveService.java:1143)
at org.apache.jmeter.save.SaveService.loadSubTree(SaveService.java:939)
at org.apache.jmeter.JMeter.run(JMeter.java:507)
at org.apache.jmeter.JMeter.startNonGui(JMeter.java:485)
at org.apache.jmeter.JMeter.start(JMeter.java:284)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.jmeter.NewDriver.main(NewDriver.java:172)
2012/02/06 16:20:06 ERROR - jmeter.JMeter: java.lang.NullPointerException
at org.apache.jmeter.JMeter.convertSubTree(JMeter.java:579)
at org.apache.jmeter.JMeter.run(JMeter.java:511)
at org.apache.jmeter.JMeter.startNonGui(JMeter.java:485)
at org.apache.jmeter.JMeter.start(JMeter.java:284)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.jmeter.NewDriver.main(NewDriver.java:172)
кто нибудь с таким встречался? подскажите пожалуйста, как это исправить?