Робота з префіксами BAS
Якщо для створення скриптів автоматизацї ви використовуєте BAS, то маєте знати, що він має свої власні селектори (префікси), які вписуються разом з усіма іншими типами селекторів, і з якими обов’язково необхідно вміти працювати. Більш детально про те, як BAS працює з селекторами і префіксами ви можете дізнатися з офіційного мануалу, а в межах цієї сторінки я хочу розглянути найголовніші особливості.
Як виглядає префікс BAS
Префікси BAS завжди пишуться між двома символами >
.
Найпростіший приклад: кожен рядок селектора зажди починається з префіксу >CSS>
або >MATCH>
або >XPATH>
.
Ці префікси вказують BAS на тип селектора, який ви обрали для пошуку елементів.
Які бувають префікси BAS
Префікси >CSS>
>MATCH>
та >XPATH>
ми вже розглянули. Вони вказують на тип селектора, який описується після цього префіксу.
Також існує префікс >AT>
, який вказує на порядковий номер елементу за чергою, починаючи з нуля. Наприклад, селектор >XPATH> //div>AT>0
вказує на перший елемент div, що зустрічається на сторінці. Тобто, можна сказати, що >AT>0
– це своєрідний аналог псевдокласу CSS :nth-child(1)
.
Ще один дуже важливий префікс – >FRAME>
. Він використовується BAS як вказівка перейти всередину фрейму (наприклад, якщо потрібний нам елемент знаходиться всередині <iframe>
), бо з логіки BAS, фрейми – це окремі веб-сторінки.
Наочний приклад
Давайте розглянемо такий код:
<div> <iframe src="https://scramble.wiki/content"> <p> Текстовий контент </p> </iframe> <iframe src="https://scramble.wiki/register"> <button> Забув пароль </button> <button> Реєстрація </button> </iframe> </div>
Тут ми маємо веб-сторінку, яка складається з двох фреймів, наповнених контентом. Припустимо, нам треба натиснути на кнопку реєстрації, що знаходиться в другому фреймі. У такому разі процес створення селектора виглядатиме так (покроково):
1. Вказуємо BAS на бажаний тип селектора:
>XPATH>
2. Вказуємо на потрібний фрейм:
>XPATH> //iframe[contains(@src,'register')]
3. Переходимо в цей фрейм:
>XPATH> //iframe[contains(@src,'register')] >FRAME>
4. Тепер, згідно з логікою BAS, ми знаходимось вже на новій сторінці, тож нам треба знову вказати тип селектора, який ми збираємося використовувати на цій сторінці. При цьому зовсім не обов’язково знову обирати >XPATH>
. Для прикладу, давайте скажемо BAS, що тепер селектори будуть >CSS>
:
>XPATH> //iframe[contains(@src,'register')] >FRAME> >CSS>
5. Тепер ми вписуємо CSS-селектор кнопки:
>XPATH> //iframe[contains(@src,'register')] >FRAME> >СSS> button
6. Додаємо BAS-префікс, що вказує на другий елемент в черзі (за відліком з нуля):
>XPATH> //iframe[contains(@src,'register')] >FRAME> >CSS> button >AT>1