Strategie di localizzazione ufficiali per il webdriver

Nella documentazione del webdirver ufficiale di W3c , è chiaramente indicato che le strategie di localizzazione sono:

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" 

Tuttavia, il protocollo wire di Selenium consentiva:

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

In THEORY, i documenti di Selenium sono obsoleti e la “vera” storia è nel nuovo documento spec. Però…

Ho eseguito alcuni test sull’ultimo Webdriver di Chrome e posso confermare che il name e il class name funzionano entrambi; tuttavia, non sono nelle specifiche.

Ricordo di aver letto su un problema di Chromium che avrebbero solo implementato le specifiche ufficiali di Webdriver.

Ora: conosco la risposta generica, in cui “le specifiche non sono sempre seguite al 100%” ecc. Tuttavia, quello che mi piacerebbe sapere è:

  • Riesci a trovare il codice in Chromium che implementa questo? (il link sarebbe molto gradito)
  • Ci sono state discussioni su questi nella mailing list di Chromium?
  • I comandi “non ufficiali” (che sono documentati nel “vecchio” file delle specifiche del selenium) potrebbero rimanere? Dove l’hai letto?

Sì, hai visto bene.

Come per l’attuale WebDriver - W3C Candidate Recommendation le Locator Strategies WebDriver - W3C Candidate Recommendation sono le seguenti:

  • "css selector" : selettore CSS
  • "link text" : seleziona il selettore del testo
  • "partial link text" : selettore del testo del collegamento parziale
  • "tag name" : nome tag
  • "xpath" : selettore XPath

Istantanea:

Strategie di localizzazione

Tuttavia, il JsonWireProtocol stato usato una volta per supportare le strategie di localizzazione elencate di seguito ma attualmente la documentazione afferma chiaramente che lo stato è OBSOLETE :

  • class name : restituisce un elemento il cui nome di class contiene il valore di ricerca; i nomi di classi composte non sono consentiti.
  • css selector : restituisce un elemento che corrisponde a un selettore CSS.
  • id : restituisce un elemento il cui attributo ID corrisponde al valore di ricerca.
  • name : restituisce un elemento il cui attributo NAME corrisponde al valore di ricerca.
  • link text : restituisce un elemento di ancoraggio il cui testo visibile corrisponde al valore di ricerca.
  • partial link text : restituisce un elemento di ancoraggio il cui testo visibile corrisponde parzialmente al valore di ricerca.
  • tag name : restituisce un elemento il cui nome del tag corrisponde al valore di ricerca.
  • xpath : restituisce un elemento che corrisponde ad un’espressione XPath. L’espressione XPath fornita deve essere applicata al server “così com’è”; se l’espressione non è relativa alla radice dell’elemento, il server non dovrebbe modificarlo. Di conseguenza, una query XPath può restituire elementi non contenuti nella sottostruttura dell’elemento radice.

Istantanea:

Strategie di localizzazione

La modifica è stata propagata attraverso i rispettivi binding specifici del client . Per i client Selenium-Java qui è il codice client in cui abbiamo il quadro che funziona per gli utenti:

  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;