isenabled selenium что делает

My fifth Selenium WebDriver Test (isDisplayed, isSelected, isEnabled)

In our previous posts, we covered topics on selenium tables, forms, waits and text fields. Now we will take a look at visibility conditions. Visibility conditions are necessary while running selenium tests, because they enable you check if an element is selected, displayed or enabled. For example, a tester may want to check if a check box has been selected on default before he/she clicks it. The best way to do this will be to use the selenium methods in the below.

For this tutorial we will be using our sample test page.

On our sample test page we have some check boxes, radio buttons and a save button. We will be checking if this elements are enabled, displayed or selected on the sample test page.

isenabled selenium что делает. Смотреть фото isenabled selenium что делает. Смотреть картинку isenabled selenium что делает. Картинка про isenabled selenium что делает. Фото isenabled selenium что делает

Steps to follow to understand when an element is disabled or enabled.

Now lets use code examples to understand how to implement this visibility conditions.

In conclusion, we have looked at the different conditions (isDisplayed, isSelected, isEnabled) selenium provides and how we can use them effectively in our test. You can download or clone this test from the Testdiary Github.

Olufemi Ade-Olusile

“My name is Olufemi Ade-Olusile, and I am a Software Developer in Test. I am the owner of «Test diary» which is aimed at inspiring and teaching software testers.

Thanks a lot, this is what I was looking for. I use R to control selenium with RSelenium package, but the documentation and tutorial is still scarce so I didn’t know how to use it properly. But I can still understand your python example, very clear.

Happy to help anytime…

Nice tutorial! Thanks a lot! Looking forward for next ones.

Anytime, hopefully I will have time to put up some new tutorials… cheers

Copyright © Test Diary. 2021 • All rights reserved.

Источник

Button.isEnabled() returns true even though the button is disabled by default [duplicate]

While testing I got a road block where I have a button in a WebPage which is disabled by default. I am using Selenium WebDriver to test if the button is disabled by default the boolean is always returning true.

It will be great if someone can help me

isenabled selenium что делает. Смотреть фото isenabled selenium что делает. Смотреть картинку isenabled selenium что делает. Картинка про isenabled selenium что делает. Фото isenabled selenium что делает

3 Answers 3

This will generally return true for everything but disabled input elements.

But it will work on buttons as well. However, isEnabled() checks for the disabled attribute. If the button is disabled by JavaScript or any other means isEnabled() won’t detect it.

My guess is the button has other classes when it is enabled or disabled. For example, when enabled it probably won’t have commandbutton-button—disabled class. You can check for it

isEnabled can only tell you the button works fine, you need to check the class attribute to check is the button is enabled.

isenabled selenium что делает. Смотреть фото isenabled selenium что делает. Смотреть картинку isenabled selenium что делает. Картинка про isenabled selenium что делает. Фото isenabled selenium что делает

I had the same problem. But my elements on the page were very strange. Some of them selenium could click although they were not clickable, some of them selenium couldn’t click, but could send keys to them. After a few hours of thinking, I have wrote universal method, that checks if elements is enabled or not.

After talking with programmer, I have known, that they use on this page some special Select, and it looks like Div with Input in it. And he says, that I can check it disabling by checking attribute Class of Div. If there is ‘select2-container-disabled’ then this Input is disabled.

And I change my method. Now it looks like that:

Источник

isDisplayed, isEnabled, isSelected Methods in Selenium

In this tutorial, we will learn isDisplayed, isEnabled, isSelected method in Selenium, and how to check the state of a WebElement.

Many a time a test fails when we click on an element or enter text in a field. This is because the element is displayed or exists in DOM, but it does not exist on the web page.

The result would be that there was an error and the test failed. So, we can handle these kinds of problems by checking the visibility of web elements on webpage. We can easily know the state of an element.

isEnabled() Method in Selenium

isEnabled() method is used to check if the web element is enabled or disabled within the web page.

This method returns “true” value if the specified web element is enabled on the web page otherwise returns “false” value if the web element is disabled on the web page.

The syntax for isEnabled() method in Selenium WebDriver is as follows:

The above syntax can be implemented in coding like this:

Let’s take an example to automate Google home page as an application under test that will check the status of element using isEnabled() method.

In general, user is not allowed to enter the text in search box when the search box is disabled. If it is enabled status, it should return true in the case.

1. Launch the web browser and open the application under test – https://www.google.com
2. Verify the web page title.
3. Verify that “Google Search Box” is enabled or not.
4. Enter the text in the “Google Search” box.
5. Verify that the “Google Search button” is enabled or not.

Let’s write the code to automate the above scenario.

Program source code 1:

In the preceding example program, we have used isEnabled() method of WebElement class to check that search box and search button is enabled or not. Both elements are enabled because they returned true.

isDisplayed() Method in Selenium

The isDisplayed() method is used to check whether an element is displayed on a web page or not. It returns a boolean value (true) if the target element is displayed otherwise returns false.

The syntax for isDisplayed() method in Selenium is as follows:

The syntax can be implemented in coding like this:

The preceding method confirms whether target element is visible on a web page until the timeout occurs. In the above scenario, we have checked that the search button is enabled on the web page.

Now we will check further that search button is displayed (visible) or not on the web page. If it is displayed, it will return true otherwise false. Look at the following source code given below.

Program source code 2:

isSelected() Method in Selenium

The isSelected() method checks that if an element is selected on the web page or not. It returns a boolean value (true) if selected, else false for deselected. It can be executed only on a radio button, checkbox, and so on.

The syntax for isSelected() method in Selenium is as follows:

Let’s take an example to automate “https://selenium08.blogspot.com/2019/07/check-box-and-radio-buttons.html” as an application under test that will check the status of selection of radio button and checkbox using isSelected() method.

Scenario to be automated:

1. Launch web browser and open the application under test –https://selenium08.blogspot.com/2019/07/check-box-and-radio-buttons.html
2. Verify that “Red checkbox” is enabled or not.
3. Check that “Red checkbox” is selected or not.
4. Check that “Opera radio button” is selected or not.

Let’s see the following source code:
Program source code 3:

Key point :

To select a checkbox or radio button, you will have to call click() method. After calling click() method, you can use isSelected() method to see whether it is selected or not.

In this tutorial, we have covered a brief overview of checking the visibility of the state of WebElement in Selenium WebDriver. Hope that you will have understood how to use isDisplayed, isEnabled, and isSelected methods in Selenium and enjoyed it.
Thanks for reading.

Источник

Как устроен Selenium: Эпизоды 3 — 5

Салют, хабровчане. Сегодня мы продолжаем серию переводов, приуроченных к запуску курса «Java QA Engineer».

isenabled selenium что делает. Смотреть фото isenabled selenium что делает. Смотреть картинку isenabled selenium что делает. Картинка про isenabled selenium что делает. Фото isenabled selenium что делает

Эпизод 3 — isDisplayed

В результате диалога, произошедшего в последние выходные января 2020 года, который был посвящен одной из проблем в Selenium, где кто-то сказал мне «почему ты просто не сделаешь так…» в ответ на объяснение проблемы, я решил написать серию статей, объясняющих команды в Selenium WebDriver и почему мы в итоге пришли к дизайну, который имеем сегодня.

Я буду повторять это в каждом эпизоде этой серии — много, иногда до безумия много размышлений и продумывания было вложено в работу каждой мельчайшей детали Selenium.

Почему нас может волновать, “отображено” ли что-либо?

Итак, давайте начнем с понимания того, почему нас в принципе может волновать отображается элемент или нет.

Во-первых, одним из самых главных юзкейсов Selenium является тестирование взаимодействия пользователя со страницей. Веб-страницы задумывались для отображения информации и, к сожалению, не обязательно предполагали интерактивность. Когда мы перешли к более интерактивному вебу, нам понадобился инструмент, который мог бы проверить по крайней мере хотя бы видимость элемента на странице.

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

Как это работает?

Прежде всего, мы должны понимать, что element.is_displayed() должен работать без необходимости прокрутки страницы. Это важно, так как мы не хотим перемещать страницу без необходимости.

Здесь нам нужно взглянуть на сам элемент. Мы смотрим на CSS элемента.

Во-первых, давайте посмотрим, является ли элемент частью дерева доступности (accessibility tree). Мы не смотрим в само дерево доступности, мы просто проверяем наличие некоторых сценариев и их влияние на расположение элементов на странице. Мы не смотрим в дерево доступности, поскольку это может быть чрезвычайно трудоемкой операцией для браузера.

Это приведет к тому, что ничего не будет добавлено дерево доступа и не повлияет на расположение элементов.

Далее нам нужно посмотреть, сможем ли мы совершить прокрутку до элемента, если это необходимо. Мы просто проверим наличие такой возможности, поскольку мы не хотим скролить на самом деле. Это важно для элементов, которые были перемещены в другое место на странице. Это означает, что мы не всегда можем рассчитывать на просмотр дерева DOM. Я обсуждал это в предыдущем посте в 2013 году.

Затем мы переходим к проверке размера элемента. Для элементов с размером 0 мы говорим, что они не видны. Мы также проверяем их opacity. Если opacity равна 0, мы не считаем элемент видимым.

Зачем рекурсия?

К сожалению, из-за CSS мы не всегда знаем, на каком уровне DOM. Нам нужно проверить каждый узел на обратном пути. Это означает, что isDisplayed может быть немного медленным, но он дает нам хорошую оценку видимости элемента.

Разве мы не можем просто взять спросить браузер, видим ли элемент?

К сожалению, нет. Браузеры, выбирая, что следует рендерить, создают списки отображения, а затем отправляют их в менеджер окон (window manager), чтобы он выполнил всю тяжелую работу. В прошлом браузеры никогда не беспокоились о том, насколько эффективно генерируется список отображения. Менеджер окон попытается сделать список отображения более эффективным, а затем отобразить его. Замечательно!

Теперь, касательно списков отображения — они всего лишь говорят оконному менеджеру, что визуализировать в области просмотра. Область просмотра (viewport) — это собственно видимая область страницы в браузере. Мы хотим, чтобы isDisplayed() сообщал нам, будет ли отображаться элемент.

Мы также можем столкнуться с частично скрытыми элементами. Как мы узнаем, является ли элемент действительно видимым или видна только его небольшая часть? Здесь мы могли бы использовать некоторые веб-API, такие как document.elementFromPoint(x, y) ;. Опять же, это скажет нам только об элементах, которые находятся в области просмотра, и даже тогда есть случаи, когда один элемент может накрывать другой, но клики проходят по «скрытому элементу».

Об этом я рассказываю подробнее в своем выступлении на Selenium Conf London 2016. Вы можете посмотреть это видео, если вам интересно.

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

Для дальнейшего чтения

Обычно я бы поместил здесь ссылку на спецификацию WebDriver для этой команды, но вы можете прочитать приложение, которое специфицирует драйверам, какую конечную точку добавлять.

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

Эпизод 4 — Поиск элементов

Найти элемент легко, верно?

Ну да, если бы люди разрабатывали свои приложения с оглядкой в первую очередь на тестируемость, отодвинув все остальное на второй план. К сожалению, мы живем в мире, где большую часть времени люди думают о качестве, а о тестировании — как о чем-то второстепенном.

Во всяком случае… давайте посмотрим, как мы можем их искать.

Ниже приведен пример использования find_element :

Мы также можем искать элементы на странице по XPATH.

Мы можем сделать следующее

Что происходит, когда он находит элемент?

а когда он не находит элемент или элементы

Есть 2 вещи, которые могут произойти.

Если искать только один элемент, вы получите исключение:

Если вы ищете более 1 элемента, вы получите пустой список:

Скоро в Selenium: Относительные локаторы

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

Для дальнейшего чтения

Вы можете детальнее углубиться в тему почитав раздел о получении элементов в спецификации WebDriver.

Эпизод 5 — Клик

У вас есть элемент, по которому вы хотите кликнуть, что теперь?

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

Проверка, находится ли еще элемент на странице

Проверка видимость элемента

Прокрутка к элементу

Проверка, является ли элемент интерактивным

Выключение некоторых событий

Затем мы вычисляем центр элемента и начинаем отправлять события. Вы можете прочитать, какие события мы отправляем в спецификации WebDriver.

А как насчет навигации?

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

Для дальнейшего чтения

Вы можете прочитать спецификацию WebDriver для более подробной информации.

Источник

Способы ожидания в Java и Selenium

Авторизуйтесь

Способы ожидания в Java и Selenium

Рассказывает Валерия, QA Automation Engineer в Noveo

Чтобы собрать вместе и систематизировать информацию по этой теме, рассмотрю все варианты написания ожиданий для автоматизированного тестирования UI посредством Java и Selenium, с которыми мне приходилось работать, а именно ожидания, предоставляемые Selenium, возможность написания собственных ожиданий и библиотека Awaitility.

Selenium waiting methods

Implicit Wait

Implicit Wait, или неявное ожидание, — пожалуй, самый популярный способ ожидания в Selenium благодаря своей легкости в использовании.

Чтобы использовать Implicit Wait в автотестестах, достаточно:

После того, как команда исполнится, Implicit Wait будет действовать на протяжении всего пробега автотестов и ожидать указанное время прежде, чем выбросить NoSuchElementException (или не выбрасывать, если необходимый элемент на странице найден). Не устанавливать Implicit Wait равносильно нулевому лимиту времени, и исключение пробросится сразу.

17 ноября, Онлайн, Беcплатно

Чтобы установить Implicit Wait, необходимо написать всего одну строку после установки драйвера, и таким образом мы установим лимит ожидания 10 секунд:

Implicit Wait можно использовать для:

Установка использования неявного ожидания будет выглядеть следующим образом:

Explicit Wait

Explicit wait, или явное ожидание, чаще используется для ожидания определенного условия, которое должно быть выполнено прежде, чем тест пойдет дальше.

О явном ожидании стоит помнить следующие вещи:

WebDriverWait wait = new WebDriverWait(driver,10);

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

Класс ExpectedConditions предоставляет нам ряд вещей, которых мы можем дожидаться во время пробега теста. Они все достаточно легко читаемы, что облегчит жизнь как вам, так и людям, которым, возможно, придется поддерживать ваши автотесты.

Вот полный список всего, что вам предлагает подождать ExpectedConditions :

В тесте создание и использование неявного ожидания будут выглядеть следующим образом:

Разница между Implicit и Explicit Wait

isenabled selenium что делает. Смотреть фото isenabled selenium что делает. Смотреть картинку isenabled selenium что делает. Картинка про isenabled selenium что делает. Фото isenabled selenium что делает

Написание собственных ожиданий

Выглядеть это может примерно таким образом:

Awaitility library

Awaitility library позволит:

Синтаксис довольно читабельный; Awaitility позволяет понять, что и куда вызывается для определения лимита времени, игнорирования исключений, где устанавливаем polling и чего ожидаем в финале нашего метода. Внутреннее написание ожидания может выглядеть так — остается только вызвать его в тесте. Хранить подобные методы стоит все же отдельно от тестов.

Отдельным примером хочу показать ожидание Assertion, именно этот метод кажется мне особенно удобным, так как убивает сразу двух зайцев и позволяет не прописывать лишних строк кода:

Это та информация, которой я хотела поделиться об ожиданиях.

Более подробно вы можете ознакомиться с Awaitility по ссылке.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *