Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Проверка того, что кнопка неактивна. Selenium ide


(Kristall89) #1

Прошу прощения за вал вопросов. Сложно автотестеру без знания программирования. Я исправлюсь потом, просто работать сейчас надо :)

На странице имеется кнопка отправки сообщения, которая в неактивном состоянии в файрбаге выглядит вот так: <input id="sendBtn" class="btn btn_fin btn_fin_dis" type="button" value="Отправить" name="sendBtn" disabled="disabled">

Требуется написать проверку того, что _кнопка_неактивна_.

Активный гуглинг показал, что средствами самого селениума такое невозможно. И даже дал пример решения ситуации через яваскрипт. Пример на яве :( Я ее не знаю, медитация на код в попытке соотнести его с имеющимися параметрами результата не дала.

Может, кто-нибудь сделает доброе дело и либо напишет мне соответствующий скрипт, пригодный для вставки в селениум "как есть" (т.е. при редактировании через xml) или хотя бы даст ссылку на аналогичный? С js у меня тоже все плохо, но чуть лучше, чем с явой, поэтому надеюсь разобраться, что с этим делать дальше.

Заранее спасибо.


(Alexander Petrovich) #2

Не хочет письмо прихоить...

Попробуйте либо использовать паузу, потому что DOM может мгновенно не обновиться.

Либо у вас две кнопки, одна видима, другая нет. Тогда вам нужно использовать verifyVisible

PS Если письмо таки придёт - скажу точно


(Kristall89) #3

Мой вариант решения. Пока не знаю, рабочий или нет

<tr>
    <td>verifyElementPresent</td>
    <td>class=btn btn_fin btn_fin_dis</td>
    <td></td>
</tr>


(Alexander Petrovich) #4

Use the Xpath Luke!

Ваш xpath будет примерно такой

//input[@type='button' and @name='sendBtn' and @disabled='disabled']

Вот его и верифайте

UPD: Ну, если кнопок у вас аж одна, то можете @name='sendBtn' выпилить


(Kristall89) #5

Если бы я еще знала, что это такое и с чем его едят... Можно я лучше the Force, как в оригинале? :)

Спасибо, попробую использовать.


(Kristall89) #6

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


(Alexander Petrovich) #7

<tr>

    <td>verifyElementPresent</td>
    <td>xpath=//input[@type='button' and @name='sendBtn' and @disabled='disabled']</td>
    <td></td>
</tr>

Как-то так

ЗЫ Лень ставить IDE :)

Пошерстите по форуму. Миша Поляруш выкладывал видео по использованию xpath. Пригодится, обещаю

 

http://www.youtube.com/watch?v=ahhaMbjqrxM


(Kristall89) #8

Спасибо, видео посмотрю, когда буду с домашнего компа. С работы видео заблочено :)
А вариант не проходит по тому же признаку, что и придуманный мной - когда я на тот же код ставлю verifyElementNotPresent после того, как все поля заполнены и кнопка должна активироваться, он все равно определяется как присутствующий и строка про "отсутствие" выдает ошибку. А мне надо, чтобы точно было видно, активна кнопка или заблокирована.


(Alexander Petrovich) #9

public доступ к странице есть? 


(Kristall89) #10

https://kabinet.rt.ru/#feedback

Вроде как должен быть, но нужна регистрация в системе.


(Kristall89) #11

Попробую.

Спасибо за помощь :)


(vmaximv) #12

1. Правильнее будет писать так: xpath=//input[@type='button' and @name='sendBtn' and @disabled]

http://www.w3.org/TR/html401/interact/forms.html#h-17.12.1

2. Возможно нужно просто подождать (waitForElement) пока кнопка не станет активной

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


(Kristall89) #13

Кажется, это то, что надо!

Проверка с проставленными verifyVisible и verifyNotVisible завершилась удачно.

Еще раз спасибо большое. :)


(Kristall89) #14

vmaximv, это, судя по всему, были видимая и невидимая кнопка. Вариант, предложенный furious_duck, подошел.


(Kristall89) #15

vmaximv, это, судя по всему, были видимая и невидимая кнопка. Вариант, предложенный furious_duck, подошел.


(Alexander Petrovich) #16

Славно, но паузу я бы таки воткнул. Секунду буквально, после заполнения данных. 

//input[@type='button' and @name='sendBtn'] - таких кнопок у вас одна. Меняется только атрибут.