Selenium IDE снова в строю

Установить https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/

Разработка https://github.com/SeleniumHQ/selenium-ide

Firefox 61. Но есть и для Chrome.

Очевидно, что придётся заново перещупывать все команды.

Ну, и как всегда

Screenshot_20180901_234404

What’s new:

SIDE Runner

Can now run project files headlessly in command line

run

Use the run command to call tests from within tests.

link locator

link is deprecated in favor of linkText and partialLinkText, more info here.

Control Flow commands

You can now use conditional logic in your tests with commands if, else if, else, end, while, times, do, and repeat if.

assert and verify commands

Use the assert and verify commands to check the value of a variable against an expected value.

Advertisements
Categories: Мелочи

Firefox 54, а там посмотрим

Ну…

Firefox 55 and Selenium IDE

The bad news: from Firefox 55 onwards, Selenium IDE will no longer work.

The reasons for this are complex, but boil down to two main causes:

Browsers are complicated pieces of software that are constantly evolving. Mozilla has been working hard to make Firefox faster and more stable, while still retaining the flexibility and ease of extension that we’ve come to know and love. As part of that process, Firefox is switching extensions from the original “XPI” format, to a newer, more widely adopted “Web Extension” mechanism.

The Selenium project lacks someone with the time and energy to move the IDE forwards to take advantage of the new technologies.

Ну, ок, я пока притормозил обновления Firefox, №54 работает норм.

Удаление children pages в Confluence

Под родительской страницей 50 штук дочерних. Массовое удаление в силу ряда причин недоступно. Если удалить только родительскую страницу, дочерние останутся. Хочется экстерминировать всё семейство, но для этого надо заходить на каждую подстраницу и “убивать” ее персонально.

Название каждой подстраницы уникально, поэтому кликать по ссылке вроде бы затруднительно.

Но нет.

<tr>
    <td>label</td>
    <td>s</td>
    <td></td>
</tr>
<!--open next children page-->
<tr>
    <td>clickAndWait</td>
    <td>//div[@id='page-children' and @class='pageSectionBody children-loaded']/span[@class='child-display']/a</td>
    <td></td>
</tr>
<!--delete page-->
<tr>
    <td>click</td>
    <td>//a[@id='action-menu-link']/span/span</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>css=#action-remove-content-link &gt; span</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>id=confirm</td>
    <td></td>
</tr>
<tr>
    <td>gotolabel</td>
    <td>s</td>
    <td></td>
</tr>

Make it so.

Categories: Мелочи

Вырви историю из гугла

Skype:

— Привет! Ты уже удалил историю своих запросов из Гугла?

— Чего?

— В сша все нехило трекается. Например, я тут страховку для машины искал. Так мне домой стала почта приходить с предложениями. И я стал замечать какие уникальные finger prints собирает мой интернет банкинг. Это удобно отчасти, но неудобно, например, при поиске авиабилетов. Тебе увеличивают стоимость билета если ты часто ищешь. Поэтому я написал extension, который чистит твою google history с http://history.google.com У меня там сейчас 13000 запросов.

— [открыл, глянул, офигел] Нда, у меня там 6119 запросов…

— Дать тебе моего чистильщика?

— Я это и сам могу. [кляц-кляц] Готово. Четыре строчки. Понеслось, история отмирает на моих глазах 🙂

— А почему у тебя аж четыре строки? У меня их только три.

if (document.querySelectorAll(“input[name=del]”))
{ document.querySelector(“span.kd-button”).click();
document.querySelector(“input.kd-button”).click(); }

— Ну, у меня попроще, бесконечный цикл в Selenium IDE:

label | start
click | id=selector_top
clickAndWait | name=btnD
gotolabel | start

Categories: Мелочи

Внезапно вываливающийся список

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

И чтобы вообще огорчить тестировщиков — список этот появляется под полем адреса только при наборе текста, а Selenium IDE такие мансы очень не любит.

Но ведь тестировщики сами могут кого угодно огорчить.

Итак, у нас есть поле ввода с id=billing_full_address, при наборе текста туда должен подтянуться целый список адресов, а затем в выпадающем списке с адресами надо будет кликнуть по тестовому адресу ‘1 Darling Mills Road, ALBION PARK  NSW  2527‘.

01-09-2014 - 17-32-18

Алгоритм:

  • впишем в этом поле начало адреса, который нужно будет получить в списке всех адресов,
  • эмулируем нажатие клавиш (можно даже передавать нажатие определенных клавиш, есть в сети полная таблица кодов),
  • дожидаемся появления ссылки с нужным адресом,
  • кликнем по ссылке с нужным адресом.
type id=billing_full_address 1 Darling island
keyDown id=billing_full_address w
keyPress id=billing_full_address w
keyUp id=billing_full_address w
waitForElementPresent //a[contains(text(),’1 Darling Mills Road, ALBION PARK  NSW  2527′)]  
click //a[contains(text(),’1 Darling Mills Road, ALBION PARK  NSW  2527′)]  

Делов-то…

Moodle > Move down a topic

В Moodle топик надо скинуть в самый низ перечня тем (просто удалить невозможно). Для простоты переименую убиваемую тему в “deleted”.

Прежде всего – определяемая тема должна быть “подсвечена” как “текущая активная” (Highlight this topic as the current topic). Скрипт будет обрабатывать /li[@class=’section main clearfix current’], название темы вообще не имеет значения. Следовательно, тему придется сделать “видимой”, иначе сделать ей подсветку невозможно.

label go
clickAndWait //li[@class=’section main clearfix current’]/div[@class=’right side’]/a[@title=’Move down’]/
gotolabel go

Побегло до финиша. Когда тема окажется в самом низу, кнопка ‘Move down’ окажется нерабочей, скрипт остановится. Дописывать проверку наличия кнопки, и при ее отсутствии переходить к завершению скрипта считаю нецелесообразным.

В общем, скрипт нужно переделать, чтобы привязка происходила непосредственно к теме с определенным названием. Должно получиться что-то вроде //div[@class=’content’]/h3[contains(text(), ‘deleted’)]/../../div[@class=’content’]/../../li[@class=’section main clearfix current’]/div[@class=’right side’]/a[@title=’Move down’]/

Categories: Мелочи Tags:

И давай всех эндорсить

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

А после того, как заэндорсил знакомого, появляется предложение эндорсить (вот ведь слово блядское) сразу четверых знакомых, нажатием на кнопку ‘Endorse all 4″.

endorseThem

Кнопка эта хитрая: обычная команда click по ней не срабатывает.

Срабатывает следующий трюк:

listPagesInTableForSearchExpectedWord
label start
mouseDownAt css=button.btn-action.endorse-all-btn
click css=button.btn-action.endorse-all-btn
pause 1000
gotolabel start

Готово.

Можно эндорсить ВСЕХ своих знакомых, не глядя.

По завершению эндорсирования кнопка исчезнет ВНЕЗАПНО, поэтому стоит озаботиться тем, чтобы скрипт посредством постоянной проверки наличия кнопки завершил свою работу достойно.