Topicos Recents
-
JavaScript Tutorial Creating a CounterString tool in Chrome Browser Dev Tools Snippets
Feed de Blogs e Posts1 -
Promoção na Escola Talking About Testing
Feed de Blogs e Posts1 -
QA - Specialist (São Paulo)
Vagas1 -
Teste api - Validação de logs
Geral5 -
Teste de software e método ágil.
Geral4 -
Indicações de empresas (in company) - Cursos
Treinamento e Eventos3 -
Dívida Técnica de Teste de Software
Geral2 -
QA Sênior @ Carenet Longevity (São Paulo)
Vagas1 -
Bate-papo sobre DevOps – Grupo de mentoria Talking About Testing
Feed de Blogs e Posts1 -
[Dúvida] Jira - Plugin para Gerenciamento de Teste
Geral2 -
What is the best fuzzer (automated software testing tool) to find 0-days? Why? Quora Answer
Feed de Blogs e Posts1 -
Tarek - Load testing web services at Mozilla with Molotov | Agile Testers Conference 2018
Treinamento e Eventos1 -
Hacking JavaScript Games - Accessing private javascript variables at runtime via debugging
Feed de Blogs e Posts1 -
Talking About Testing & Patas Dadas
Feed de Blogs e Posts1 -
Agile Testers 2019 News
Geral4 -
Escreva código uma só vez
Feed de Blogs e Posts1 -
Automated tests in a CD/CI pipeline
Feed de Blogs e Posts1 -
How to Practice your JavaScript, Software Testing and Test Automation
Feed de Blogs e Posts1 -
How to Pretty Print JSON using Browser Dev Tools
Feed de Blogs e Posts1 -
How to bypass no paste controls on a web form
Feed de Blogs e Posts1
O que usar no lugar de browser.sleep ?
-
Bom dia, o que posso usar no lugar de sleep? Por exemplo, tenho um teste que clica em um determinado botão quando está clicável (usando o protractor-helper do @Walmyr ), mas só funciona se usar um sleep antes. Estou usando como no exemplo:
browser.sleep(6000);
protractorHelper.clickWhenClickable(botaoEditar, ‘Botão editar não está clicável’, 10000);Se retirar o sleep, o teste quebra, porque não consegue clicar no botão. Alguma sugestão? E qual a diferença entre presenceOf e visibilityOf ?
-
@michael-martins, no protractor-helper tem 2 funções que você pode usar para substituir o sleep, que são o
waitForElementPresence
e owaitForElementVisibility
.O erro está ocorrendo porque você quer que clique quanto esteja clicável, mas na hora que chama essa função, o elemento não está presente ou não está visível.
Primeiro espere que ele esteja presente ou visível, depois clique quando estiver clicável.
Faça da seguinte forma:
protractorHelper.waitForElementVisibility(botaoEditar); protractorHelper.clickWhenClickable(botaoEditar);
ou
protractorHelper.waitForElementPresence(botaoEditar); protractorHelper.clickWhenClickable(botaoEditar);
Notei que você passa a mensagem de erro e o timeout como parâmetros na função
clickWhenClickable
, eu sugiro não passar eles e passar apenas o elemento que deseja realizar a ação. As funções da biblioteca do @Walmyr já possuem valores default para mensagem de erro e timeout, que é de 5 segundos.Se você não tivesse passado a mensagem no parâmetro, teria recebido como sugestão de causa do erro a seguinte mensagem:
Possibly it's not present or visible.
Essa mensagem é uma sugestão para utilizar owaitForElementPresence
ou owaitForElementVisibility
.Veja qual satisfaz sua necessidade.
-
Tento com waitForElementVisibility e waitForElementPresence e não dá certo. Tem um botão editar que abre um formulário. Mas não está encontrando esse botão, mesmo ele já estando na tela e aumentando o tempo pra 10 segundos. Só funciona se usar sleep.
-
Deu certo aqui. É que estava dentro de outra classe. Valeu
-
Tive que esperar um elemento que estava na frente carregar, pra poder clicar no elemento atrás. Mas o estranho é que no firefox isso funciona e no chrome não. Após isso, o chrome encontra o id de um elemento e o firefox não. Ou uso o waitForElementVisibility e o firefox funciona, mas não encontra o id, ou uso sleep pra funcionar no chrome, já que ele consegue encontrar o id, mas não funciona com waitForElementVisibility
-
@paulo-gonçalves said in O que usar no lugar de browser.sleep ?:
a da seguinte for
Só para explicar, o clickWhenClickable já verifica que o elemento, além de estar num estado clicável, também está visivel.
Para tal função uso a Expected Condition elementToBeClickable do Protractor. Segue a documentação oficial para referêcia: http://www.protractortest.org/#/api?view=ProtractorExpectedConditions.prototype.elementToBeClickable
Vejam que a descrição da função é: “An Expectation for checking an element is visible and enabled such that you can click it.” -
visibilityOf significa que o elemento não só está no DOM, como está visível, ou seja, tem largura e altura maior que zero, já presenceOf significa que o elemento está presente no DOM, mas ele pode não estar visível (imagine um elemento que está no DOM mas tem a propriedade display: none;
Espero ter ajudado! -
Obrigado @Walmyr .
Aproveitando, gostaria de tirar uma dúvida. Estou usando waitForElementVisibility em alguns elementos e estou conseguindo evitar o uso do sleep, mas estou com algumas dificuldades. Tenho um elemento que usa o mat-select do angular material, e ele tem um delay pra aparecer e sair. Quando dou um clique em um mat-option, ele diz que outro elemento deveria receber o click, que no caso é o cdk-overlay-backdrop do mat-select. O que eu poderia usar nesse caso? -
@michael-martins
Testa utilizando o métodowaitForElementNotToBePresent
passando como parâmetro o elementocdk-overlay-backdrop
.
Depois disso você manda clicar nomat-option
. -
@paulo-gonçalves isso que acabei de fazer e deu certo. Usei waitForElementNotToBeVisible e deu certo. Valeu pela ajuda galera o/