Personalizando um Nó
Como personalizar um Nó
Há momentos em que gostaríamos de personalizar um Nó de acordo com nossas necessidades.
Por exemplo, podemos desejar fazer alguma configuração adicional antes que uma sessão comece a ser executada e executar alguma limpeza após o término de uma sessão.
Os seguintes passos podem ser seguidos para isso:
Crie uma classe que estenda
org.openqa.selenium.grid.node.Node
.Adicione um método estático (este será nosso método de fábrica) à classe recém-criada, cuja assinatura se parece com esta:
public static Node create(Config config)
. Here:Node
é do tipoorg.openqa.selenium.grid.node.Node
Config
é do tipoorg.openqa.selenium.grid.config.Config
- Dentro deste método de fábrica, inclua a lógica para criar sua nova classe..
- TPara incorporar esta nova lógica personalizada no hub, inicie o nó e passe o nome da classe totalmente qualificado da classe acima como argumento.
--node-implementation
Vamos ver um exemplo de tudo isso:
Node personalizado como um uber jar
- Crie um projeto de exemplo usando sua ferramenta de construção favorita. (Maven|Gradle).
- Adicione a seguinte dependência ao seu projeto de exemplo..
- Adicione o seu nó personalizado ao projeto.
- Construir algo. uber jar Para ser capaz de iniciar o Node usando o comando
java -jar
. - Agora inicie o nó usando o comando:
Observação: Se estiver usando o Maven como ferramenta de construção, é preferível usar o maven-shade-plugin em vez do maven-assembly-plugin porque o plugin maven-assembly parece ter problemas para mesclar vários arquivos de Service Provider Interface (META-INF/services
).
Node personalizado como jar
- Crie um projeto de exemplo usando a sua ferramenta de construção favorita (Maven|Gradle).
- Adicione a seguinte dependência ao seu projeto de exemplo:
- Adicione o seu Node personalizado ao projeto.
- Construa um arquivo JAR do seu projeto usando a sua ferramenta de construção.
- Agora, inicie o Node usando o seguinte comando:
Aqui está um exemplo que apenas imprime algumas mensagens no console sempre que houver uma atividade de interesse (sessão criada, sessão excluída, execução de um comando do webdriver, etc.) no Node.
Sample customized node
Notas de Rodapé:
No exemplo acima, a linha Node node = LocalNodeFactory.create(config);
cria explicitamente um LocalNode
.
Basicamente, existem 2 tipos de implementações visíveis para o usuário de org.openqa.selenium.grid.node.Node
disponíveis.
Essas classes são bons pontos de partida para aprender como criar um Node personalizado e também para compreender os detalhes internos de um Node.
org.openqa.selenium.grid.node.local.LocalNode
- Usado para representar um Node de execução contínua e é a implementação padrão que é usada quando você inicia umnode
.- Pode ser criado chamando
LocalNodeFactory.create(config);
, onde:LocalNodeFactory
pertence aorg.openqa.selenium.grid.node.local
Config
pertence aorg.openqa.selenium.grid.config
- Pode ser criado chamando
org.openqa.selenium.grid.node.k8s.OneShotNode
- Esta é uma implementação de referência especial em que o Node encerra-se graciosamente após atender a uma sessão de teste. Esta classe atualmente não está disponível como parte de nenhum artefato Maven pré-construído.