Estratégias oficiais de localização para o webdriver

Na documentação oficial do webdirector da W3c , está claramente indicado que as estratégias de localização são:

State Keyword CSS selector "css selector" Link text selector "link text" Partial link text selector "partial link text" Tag name "tag name" XPath selector "xpath" 

No entanto, o protocolo de fio do Selenium permitiu:

 class name css selector id name link text partial link text tag name xpath 

Em TEORIA, os documentos do Selenium são obsoletos e a história “real” está no novo documento de especificação. Contudo…

Fiz alguns testes no Webdriver mais recente do Chrome, e posso confirmar que o name e o class name funcionam; no entanto, eles não estão nas especificações.

Lembro de ler em um problema do Chromium que eles só implementariam as especificações oficiais do Webdriver.

Agora: Eu sei a resposta genérica, onde “especificações nem sempre são seguidas 100%” etc. No entanto, o que eu gostaria de saber é:

  • Você consegue encontrar o código no Chromium que implementa isso? (link seria muito bem-vindo)
  • Houve discussões sobre isso na lista de discussão do Chromium?
  • Os comandos “não oficiais” (que estão documentados no arquivo de especificações de selenium “antigo”) provavelmente permanecerão? Onde você leu assim?

Sim, você viu certo.

De acordo com a recomendação atual do WebDriver - W3C Candidate Recommendation as Locator Strategies listadas são as seguintes:

  • "css selector" : seletor CSS
  • "link text" : seletor de texto de link
  • "partial link text" : Seletor de texto de link parcial
  • "tag name" : nome da tag
  • "xpath" : seletor XPath

Instantâneo:

Estratégias de localização

No entanto, o JsonWireProtocol já foi usado para dar suporte às estratégias de localizador JsonWireProtocol abaixo, mas atualmente a documentação afirma claramente que ele é um status como OBSOLETE :

  • class name : Retorna um elemento cujo nome da class contém o valor da pesquisa; nomes de class compostos não são permitidos.
  • css selector : Retorna um elemento correspondente a um seletor CSS.
  • id : Retorna um elemento cujo atributo de ID corresponde ao valor da pesquisa.
  • name : retorna um elemento cujo atributo NAME corresponde ao valor da pesquisa.
  • link text : retorna um elemento de âncora cujo texto visível corresponde ao valor da pesquisa.
  • partial link text : retorna um elemento de âncora cujo texto visível corresponde parcialmente ao valor da pesquisa.
  • tag name : retorna um elemento cujo nome da tag corresponde ao valor da pesquisa.
  • xpath : Retorna um elemento que corresponde a uma expressão XPath. A expressão XPath fornecida deve ser aplicada ao servidor “como está”; se a expressão não for relativa à raiz do elemento, o servidor não deverá modificá-la. Conseqüentemente, uma consulta XPath pode retornar elementos não contidos na subtree do elemento raiz.

Instantâneo:

Estratégias de localização

A mudança foi propagada através das respectivas ligações específicas do cliente . Para os clientes Selenium-Java , aqui está o código do cliente em que temos o switchcase funcionando para os usuários:

  switch (using) { case "class name": toReturn.put("using", "css selector"); toReturn.put("value", "." + cssEscape(value)); break; case "id": toReturn.put("using", "css selector"); toReturn.put("value", "#" + cssEscape(value)); break; case "link text": // Do nothing break; case "name": toReturn.put("using", "css selector"); toReturn.put("value", "*[name='" + value + "']"); break; case "partial link text": // Do nothing break; case "tag name": toReturn.put("using", "css selector"); toReturn.put("value", cssEscape(value)); break; case "xpath": // Do nothing break; } return toReturn;