As bibliotecas principais do Selenium tentam ser de baixo nível e não opinativas. As classes de suporte em cada linguagem fornecem invólucros opinativos para interações comuns que podem ser usadas para simplificar alguns comportamentos.
This is the multi-page printable view of this section. Click here to print.
Recursos de suporte
1 - Command Listeners
These allow you to execute custom actions in every time specific Selenium commands are sent
2 - Trabalhando com cores
Ocasionalmente, você desejará validar a cor de algo como parte de seus testes; o problema é que as definições de cores na web não são constantes. Não seria bom se houvesse uma maneira fácil de comparar uma representação HEX de uma cor com uma representação RGB de uma cor, ou uma representação RGBA de uma cor com uma representação HSLA de uma cor?
Não se preocupe. Existe uma solução: a classe Color!
Em primeiro lugar, você precisará importar a classe:
Agora você pode começar a criar objetos coloridos. Cada objeto de cor precisará ser criado a partir de uma representação de string de sua cor. As representações de cores com suporte são:
A classe Color também suporta todas as definições de cores básicas especificadas em http://www.w3.org/TR/css3-color/#html4.
Às vezes, os navegadores retornam um valor de cor “transparent” se nenhuma cor foi definida em um elemento. A classe Color também oferece suporte para isso:
Agora você pode consultar com segurança um elemento para obter sua cor / cor de fundo sabendo que qualquer resposta será analisada corretamente e convertido em um objeto Color válido:
Você pode então comparar diretamente os objetos coloridos:
Ou você pode converter a cor em um dos seguintes formatos e realizar uma validação estática:
As cores não são mais um problema.
3 - ThreadGuard
Esta classe está disponível apenas no Java Binding
ThreadGuard verifica se um driver é chamado apenas da mesma thread que o criou. Problemas de threading, especialmente durante a execução de testes em paralelo, podem ter erros misteriosos e difíceis de diagnosticar. Usar este wrapper evita esta categoria de erros e gerará uma exceção quando isso acontecer.
O exemplo a seguir simula um conflito de threads:
O resultado mostrado abaixo:
Conforme visto no exemplo:
protectedDriver
será criado no tópico principal- Usamos Java
Runnable
para ativar um novo processo e uma novaThread
para executar o processo - Ambas as
Thread
s entrarão em conflito porque a thread principal não temprotectedDriver
em sua memória. ThreadGuard.protect
lançará uma exceção.
Nota:
Isso não substitui a necessidade de usar ThreadLocal
para gerenciar drivers durante a execução em paralelo.
4 - Trabalhando com elementos select
The Select object will now give you a series of commands
that allow you to interact with a <select>
element.
If you are using Java or .NET make sure that you’ve properly required the support package in your code. See the full code from GitHub in any of the examples below.
Note that this class only works for HTML elements select
and option
.
It is possible to design drop-downs with JavaScript overlays using div
or li
,
and this class will not work for those.
Types
Select methods may behave differently depending on which type of <select>
element is being worked with.
Single select
This is the standard drop-down object where one and only one option may be selected.
Multiple select
This select list allows selecting and deselecting more than one option at a time.
This only applies to <select>
elements with the multiple
attribute.
Create class
First locate a <select>
element, then use it to initialize a Select
object.
Note that as of Selenium 4.5, you can’t create a Select
object if the <select>
element is disabled.
List options
There are two lists that can be obtained:
All options
Get a list of all options in the <select>
element:
Selected options
Get a list of selected options in the <select>
element. For a standard select list
this will only be a list with one element, for a multiple select list it can contain
zero or many elements.
Select option
The Select class provides three ways to select an option. Note that for multiple select type Select lists, you can repeat these methods for each element you want to select.
Text
Select the option based on its visible text
Value
Select the option based on its value attribute
Index
Select the option based on its position in the list
Disabled options
Options with a disabled
attribute may not be selected.
De-select option
Only multiple select type select lists can have options de-selected. You can repeat these methods for each element you want to select.
5 -
expected_conditions.ja.md— title: “Waiting with Expected Conditions” linkTitle: “Expected Conditions” weight: 1 description: > These are classes used to describe what needs to be waited for.
Expected Conditions are used with Explicit Waits. Instead of defining the block of code to be executed with a lambda, an expected conditions method can be created to represent common things that get waited on. Some methods take locators as arguments, others take elements as arguments.
These methods can include conditions such as:
- element exists
- element is stale
- element is visible
- text is visible
- title contains specified value