Giter Site home page Giter Site logo

Comments (6)

PauloGoncalvesBH avatar PauloGoncalvesBH commented on May 18, 2024 1

I'll check it.

from protractor-helper.

PauloGoncalvesBH avatar PauloGoncalvesBH commented on May 18, 2024

O que eu constatei até agora:

Para pegar o elemento na mensagem de erro é utilizado esse trecho: htmlElement.parentElementArrayFinder.locator_.value

Pra testes e ter os resultados abaixo, eu excluí o final .value da função getDefaultIsNotVisibleMessage, fazendo com que seja impresso o locator_ do elemento que deu erro.

Ao utilizar o by.id, o locator_ retornado é esse:
By(css selector, *[id="asdasd"])
O value, que será adicionado na mensagem, é *[id="asdasd"].
Portanto, o value é o valor à direita da linha dentro da função By().

Porém, ao utilizar o by.cssContainingText, o locator retornado é diferente dos demais:
by.cssContainingText("asasda", "asdasd")
Dessa forma, não tem value para retornar, por isso na mensagem está aparecendo undefined.

O problema ocorre apenas quando você utiliza o locator cssContainingText, com os outros locators o value é retornado corretamente devido à retornarem a função By().

O que eu farei agora será estudar as opções de retorno do parentElementArrayFinder, para só então ver a melhor forma de corrigir.

Já pensei nas seguintes opções de correção que serão minhas últimas opções, pois não quero deixar as mensagens de retorno dos locators que não sejam o cssContainingText ruins:

  1. Ao invés de imprimir o value do locator, imprimir o locator. As mensagens ficariam assim:
    1.1 Failed: element with locator 'By(css selector, *[id="asdasd"])' is not visible
    Nesse caso ficará pior para o usuário, pois imprimia o value *[id="asdasd"]).
    1.2 Failed: element with locator 'by.cssContainingText("asasda", "asdasd")' is not visible
    Nesse caso, especificamente com o cssContainingText, o usuário passará a saber qual locator não está visível, ao invés de imprimir undefined.
  2. Criar alguma validação de que se for cssContainingText, imprimir o locator, e não o value. Não sei se é possível.

from protractor-helper.

PauloGoncalvesBH avatar PauloGoncalvesBH commented on May 18, 2024

Adendo:

Não ocorre apenas com o cssContainingText, mas com todos os elementos específicos do Protractor, como o buttonText e o partialButtonText.

from protractor-helper.

PauloGoncalvesBH avatar PauloGoncalvesBH commented on May 18, 2024

@wlsf82
Pelo que estudei, realmente a única solução é essa:

Ao invés de imprimir o value do locator, imprimir o locator. As mensagens ficariam assim:
1.1 Failed: element with locator 'By(css selector, *[id="asdasd"])' is not visible
Nesse caso ficará pior para o usuário, pois imprimia o value *[id="asdasd"]).
1.2 Failed: element with locator 'by.cssContainingText("asasda", "asdasd")' is not visible
Nesse caso, especificamente com o cssContainingText, o usuário passará a saber qual locator não está visível, ao invés de imprimir undefined.

O que acha de aplicar ela?

Vai ajudar nos locators do protractor, que estão retornando undefined, mas atrapalhar um pouco nos do selenium, que retornam o valor passado.

Se aprovar eu faço as alterações e o PR.

from protractor-helper.

wlsf82 avatar wlsf82 commented on May 18, 2024

Go ahead. Better to have all cases giving a valid error message, than only some cases.

from protractor-helper.

wlsf82 avatar wlsf82 commented on May 18, 2024

Closed by 4f9dbaf

from protractor-helper.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.