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

Публикации ganzalik228

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



#107356 innerHTML в Selenium

Отправлено автор: ganzalik228 05 июля 2012 - 12:56 в Selenium - Functional Testing


Суть такова, на странице регистрации, в поле, нужно ввести сумму двух чисел которые каждый раз меняются при генерации страницы. Эти числа записаны в элементе div. Задача подтянуть содержание элемента div как сроку и дальше уже проводить с ней вичисления. Или ваш вариант.

<div class="x-chanage-code" style="background-color:#000000;color:#ffffff;font-style:italic;-moz-user-select:none;cursor:default;padding:3px 0 0 12px;height:17px;width:80px;border: solid 1px #bdbfb5;font-weight:bold;" onselectstart="return false">9 * 9 = ?</div>

В даном примере нужно ввести 81, так как 9 * 9 = 81 :)


Сначала вам надо вытянуть текст "9*9=?"
Делается это очень просто
String captha = driver.findElement(By.xpath("//div[@class='x-chanage-code']")).getText();
После этого работайте как с обычной строкой ))


Чёрт, я совсем под солнцем запарился) Я думал это совсем не текст) извините) мозг уже не работает( это всё делается элементарно в таком случае. ещё раз извините за вынос мозга со скриптами и прочее)
В selenium IDE,если надо, то: storeEval | selenium.getText("//путь к div") | asd или storeText | путь | asd



#107351 innerHTML в Selenium

Отправлено автор: ganzalik228 05 июля 2012 - 12:29 в Selenium - Functional Testing

если хотите, можете скинуть ссылку на рег. форму, может смогу помочь



#107349 innerHTML в Selenium

Отправлено автор: ganzalik228 05 июля 2012 - 12:20 в Selenium - Functional Testing

Вообще, если есть возможность, можете остановить картинку, т.е. генерацию чисел, или временно сделать их постоянными (когда-то сталкивался с таким, делал именно так). Другой способ, можно вытянуть эти 2 числа java скриптом, в этом же скрипте сложить их, и записать результат в переменную, потому эту переменную ввести в verification. Откровенно говоря как вытянуть по отдельности 2 числа, я не знаю, Вам лучше обратиться на javascript.ru форум, т.к. в <div> куча всего. тут уж извините) Ещё, как вариант, если есть доступ к коду, вписать в код простой скриптик, в стиле "если verification = 999 и если verification = сумма 2 сгенерированных чисел совпадает то считать результат верным". Получится что и вы всегда своим "ботом" можете зарегиться, и пользователи не смогут обойти эту проверку, если не угадают загаданное Вами число) С моей стороны этот вариант будет попроще. Сам я конкретно с таким не сталкивался, только с похожими проблемами, но должно работать. Т.е. потом Вы просто вводите 999 и результат будет верен. Но это если у вас есть доступ к коду и страницы и Вы можете его изменять. Если есть, то вообще просто уберите "событие проверки совпадения чисел" при нажатии кнопки до окончания Вашего теста. Но вот если нет доступа, то ничего пока подсказать не могу, не вижу кода всей стрницы, каким образом он проверят, как он проверяет по нажатию кнопки я не знаю. Единственный вариант в таком случае, это вытянуть по отдельности эти 2 числа, но как вытянуть отдельно не знаю. Если есть вопросы обращайтесь) а то мне скучно на работе)



#107336 innerHTML в Selenium

Отправлено автор: ganzalik228 05 июля 2012 - 11:01 в Selenium - Functional Testing

не очень понимаю что именно нужно. У Вас есть input (куда вводится сумма 2 чисел со стороны пользователя), есть кнопка submit, при нажатии которой, должна быть "проверка не лету" правильно ли введена сумма 2 чисел в input, откуда ПОЛЬЗОВАТЕЛЬ (без доступа к коду, !!Не програмер, у которого есть код страницы) берёт эти числа? И что должны получить в результате теста? Просто проверка правильной суммы при каждом обновлении страницы? я так понял?



#107334 Поиск элементов по области

Отправлено автор: ganzalik228 05 июля 2012 - 10:45 в Selenium - Functional Testing

можно простым скриптиком добавить в элемент нужный атрибут\сменить type и т.д.. А вообще для тестирования не очень понимаю зачем тебе это. Если элемент присутствует в коде. Если элемент скрыт, но в коде он есть, просто через xpath клацаешь по нему. У меня работает)



#106339 .style.background ошибка в скрипте

Отправлено автор: ganzalik228 05 июня 2012 - 09:57 в Selenium - Functional Testing

да простят меня скриптеры за столько тупую ошибку, видно перегрелся) Зачем пихал window.document.getElementsByTagName сижу сам не понимаю.



#106338 .style.background ошибка в скрипте

Отправлено автор: ganzalik228 05 июня 2012 - 09:42 в Selenium - Functional Testing

Сам скрипт: var form =window.document.forms[0]; elements = form.elements; for (var i = 0; i < elements.length; i++) {window.document.getElementsByTagName("elements").item(i).style.backgroundColor}

Ошибка: [error] Threw an exception: window.document.getElementsByTagName("elements").item(i) is null

В чём может быть беда? ("elements") без скобок пробовал) Делается через storeEval



#106117 Запись данных в перемёную

Отправлено автор: ganzalik228 30 мая 2012 - 20:23 в Selenium - Functional Testing

Здраствуйте)
Использую Selenium IDE
У меня возникла некая трудность с записью в переменною некого значения
Вот пример html кода того что меня интересует
<p>
<label for="order_id">Order ID:</label>
&nbsp; 69F06605-5789-4C0A-92C0-6B5E39A65188
</p>

я сделал следующее
<tr>
<td>storeText</td>
<td>//p[2]</td>
<td>gg</td>
</tr>
<tr>
<td>echo</td>
<td>${gg}</td>
<td></td>
</tr>

в итоге получаю следующее
[info] echo: Order ID: 69F06605-5789-4C0A-92C0-6B5E39A65188
Можно как то вытянуть 69F06605-5789-4C0A-92C0-6B5E39A65188 без надписи Order ID: в переменную ?

спасибо за понимание


можно попробовать скриптом вытянуть. Через .replace. Попробуйте это: storeEval |
TEXT = selenium.getText("xpath=p[2]"); rTEXT = TEXT.replace(/[\\Order ID:\\(\\)]/g, '');
| gg echo | ${gg} |
Поиграйте с replace, может что-то туда добавить нужно будет. И "xpath= " свой путь впихните. На этом мои полномочия всё)



#106001 Достучаться до всех элементов формы

Отправлено автор: ganzalik228 26 мая 2012 - 09:27 в Selenium - Functional Testing

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



#106000 Конвертирование цвета из (rrr,ggg,bbb) в #RRGGBB

Отправлено автор: ganzalik228 26 мая 2012 - 07:06 в Selenium - Functional Testing


вот еще http://stackoverflow...-and-hex-to-rgb

Вот этот метод можно впихнуть в IDE:
getEval | RGB2HTML = function (red, green, blue) { var decColor = red + 256 * green + 65536 * blue; return decColor.toString(16); }
storeEval | hex = RGB2HTML(red, green, blue) | hex


спасибо. Я вот уже так сделал: storeEval |

color = window.document.defaultView.getComputedStyle(window.document.getElementsByTagName('input')[0]).getPropertyValue('background-color'); colorArr = color.replace(/[\\rrgb\\(\\)]/g, '').split(','); hexString = '#' + parseInt(colorArr[0]).toString(16) + parseInt(colorArr[1]).toString(16) + parseInt(colorArr[2]).toString(16); | rgbToHex



#105984 Конвертирование цвета из (rrr,ggg,bbb) в #RRGGBB

Отправлено автор: ganzalik228 25 мая 2012 - 11:59 в Selenium - Functional Testing

да, то, методов много, я не могу понять, как их впихнуть в селениум в мой код(



#105848 Конвертирование цвета из (rrr,ggg,bbb) в #RRGGBB

Отправлено автор: ganzalik228 22 мая 2012 - 14:16 в Selenium - Functional Testing

не понятно для какого языка программирования нужно решение, поэтому только общие рекомендации:
поищите в поисковике по предложению (converting rgb to hex), и выберите наиболее подходящий для вас.


javascript. Искал, сложновато-то разобраться, да ещё и всё на инглише. Ну попробую



#105837 Конвертирование цвета из (rrr,ggg,bbb) в #RRGGBB

Отправлено автор: ganzalik228 22 мая 2012 - 10:29 в Selenium - Functional Testing

вот таким вот способом получен цвет:
storeEval | window.document.defaultView.getComputedStyle(window.document.getElementsByTagName('input')[0]).getPropertyValue('background-color'); | result

цвет он получает в rgb(rrr,ggg,bbb), как получить цвет в #rrggbb, точнее конвертировать его



#105679 как остановить цикл FOR после ошибки

Отправлено автор: ganzalik228 17 мая 2012 - 12:33 в Selenium - Functional Testing


есть вот такая вот проверочка: storeEval|
var input = window.document.getElementsByTagName('input'); for (var i = 0; i<input.length; i++) { if(window.document.defaultView.getComputedStyle(input[i]).getPropertyValue('background-color') == 'rgb(204, 230, 255)') {testResult='passed';} else {testResult='failed';};}
|testResult

Проверяет всё хорошо, но!, беда в том, что результат при echo ${testResult} он показывает только из последнего input, и я не вижу, если ли ошибки в остальных инпутах. Как решить проблему? Может быть можно как-то при ошибке где-то в середине остановить цикл, и записать в testResult значение failed?
{testResult = 'failed'; break;}} не помогает, так мой результат теста всегда failed, если и цвета все правильные

Можно как то так:
storeEval|
var testResult = "passed"; var input = window.document.getElementsByTagName('input'); for (var i = 0; i<input.length; i++) { if(window.document.defaultView.getComputedStyle(input[i]).getPropertyValue('background-color') != 'rgb(204, 230, 255)') {testResult='failed'} else {};} return testResult
|testResult
Прерывания не будет, но testResult получите правильный. Если вам надо знать конкретно каком из импутов ошибка, то используйте массив.

не проверял Ваш метод, сделал так, работает: var input = window.document.getElementsByTagName('input');
var testResult = 'passed';
for(var i = 0; i<input.length; i++) {
if(window.document.defaultView.getComputedStyle(input[i]).getPropertyValue('background-color') != 'rgb(204, 230, 255)') {
testResult = 'failed';
break;
}



#105669 getElementsByTagName

Отправлено автор: ganzalik228 17 мая 2012 - 10:33 в Selenium - Functional Testing

for (WebElement element : window.document.getElementsByTagName('select')) {
     String color = getComputedStyle(element).getPropertyValue('color');
     // ...
     // Тут делаем что-то с полученным значением
     // ...
}

спасибо, но уже сделал так: var input = window.document.getElementsByTagName('select');
for(var i = 0; i<select.length; i++) {



#105659 как остановить цикл FOR после ошибки

Отправлено автор: ganzalik228 17 мая 2012 - 09:33 в Selenium - Functional Testing

есть вот такая вот проверочка: storeEval|
var input = window.document.getElementsByTagName('input'); for (var i = 0; i<input.length; i++) { if(window.document.defaultView.getComputedStyle(input[i]).getPropertyValue('background-color') == 'rgb(204, 230, 255)') {testResult='passed';} else {testResult='failed';};}
|testResult

Проверяет всё хорошо, но!, беда в том, что результат при echo ${testResult} он показывает только из последнего input, и я не вижу, если ли ошибки в остальных инпутах. Как решить проблему? Может быть можно как-то при ошибке где-то в середине остановить цикл, и записать в testResult значение failed?
{testResult = 'failed'; break;}} не помогает, так мой результат теста всегда failed, если и цвета все правильные



#105613 getElementsByTagName

Отправлено автор: ganzalik228 16 мая 2012 - 11:22 в Selenium - Functional Testing

Такая проблема, getComputedStyle(window.document.getElementsByTagName('select')[0]).getPropertyValue('color') берёт значение лишь у 1 select'a, как сделать, чтобы брался цвет у всех select'ов?

Если я убираю индекс [0], то тест валится с ошибкой [error] Threw an exception: Could not convert JavaScript argument arg 0 [nsIDOMWindow.getComputedStyle]



#105512 Selenium IDE условие "IF"

Отправлено автор: ganzalik228 14 мая 2012 - 21:00 в Selenium - Functional Testing

Если знаете javasctipt, можете обойтись без расширений, например:

runScript

if(document.getElementById('p1').style.display == 'inline') document.getElementById('p1').click(); else document.getElementById('p2').click();

//если видим элемент "p1" - делаем клик по нему, иначе делаем клик по "p2"


всё верно, только чуть-чуть с "оформлением", скажем так, не верно, вот примерно так надо:

runScript | javascript{if(условие){действие1; действие2;}} else if(условие){действие1;действие2;}

ну вот как-то так)

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

runScript | javascript{if(selenium.getSelectedLabel("***")=="***" == true) {if(selenium.isEditable("***") == true) {alert("***");}if(selenium.isEditable("***") == true) {alert("***");}} else if(selenium.getSelectedLabel("***")=="[выбрать]" == false) {alert("***");}}



#105484 Selenium IDE условие "IF"

Отправлено автор: ganzalik228 14 мая 2012 - 15:05 в Selenium - Functional Testing

Если знаете javasctipt, можете обойтись без расширений, например:

runScript

if(document.getElementById('p1').style.display == 'inline') document.getElementById('p1').click(); else document.getElementById('p2').click();

//если видим элемент "p1" - делаем клик по нему, иначе делаем клик по "p2"


Вот, что-то подобное я и имел ввиду) Спасибо, буду пробовать скриптом штурмовать.



#105284 Selenium IDE условие "IF"

Отправлено автор: ganzalik228 09 мая 2012 - 21:30 в Selenium - Functional Testing

ситуацией, когда нет возможности его использовать)а действия нужно производить. Например: если текст 1 присутствует, то... например кликнуть даже по нему, если присутствует текст 2 то кликнуть по тексту 2



#105269 Проверка цвета всех полей

Отправлено автор: ganzalik228 08 мая 2012 - 15:13 в Selenium - Functional Testing

Как сделать проверку всех полей, например, на цвет? Задача такая: есть 6 полей "input". Допустим, в 3х из них (мы не знаем какие именно) цвет задан в css, а в других 3х (опять же не зная какие) цвет задан атрибутом style. Как проверить все 6 полей? Причём, если добавить ещё пару input, тест должен будет проверить и их. Естественно, поля одинакового цвета, и цвет мы знаем. Неважно на что будет проверка (цвет, ширина, длина и т.д.)) ), главное чтобы проверялись ВСЕ поля, важна суть, как это можно организовать.



#105267 Selenium IDE условие "IF"

Отправлено автор: ganzalik228 08 мая 2012 - 15:04 в Selenium - Functional Testing

Как в IDE организовать условие "если ... то" без дополнительных расширений? Знаю, что как-то скриптом, но как?) пример условия:
если присутствует ТЕКСТ1, то .... если присутствует ТЕКСТ2, то...



#105132 цикл If и select

Отправлено автор: ganzalik228 03 мая 2012 - 20:53 в Selenium - Functional Testing

Попробуйте так:

storeEval | if (selenium.getSelectedLabel(selectLocator)=="Выбранная опция") {action}


Спасибо, работает, всё не так и сложно оказалось)



#105114 цикл If и select

Отправлено автор: ganzalik228 03 мая 2012 - 13:54 в Selenium - Functional Testing

Как организовать if для селектов? Т.е. если из списка выбрана первая опция, то .... если 2 то.... я не знаю какую функцию ему задать. storeEval || if (selenium.???????("locator", "label=mylabel") == true) {action} else if (......); вот что вместо вопросиков? Или как вообще можно организовать такой цикл? С is.ElementPresent is.Checked всё понятно, с селектом ничего не получается



#104431 Assert.assertTrue WebDriver

Отправлено автор: ganzalik228 18 апреля 2012 - 06:23 в Selenium - Functional Testing

да, это я задавался тем же вопросов в IDE когда-то) но там куда всё проще, verify и всё понятно, ошибка видна, тест не падает. А в driver verify как я понял отсутствует.