2015-08-07 3 views
21

Non capisco veramente per cosa siano i comandi $ e $$. Ho pensato che fossero solo un sostituto di "by.css", ma perché il $$?

<element id = "eId"></element> 

ho pensato, che per quanto precede, essi sarebbero equivalenti:

element(by.css('#eId')); 

e

element($('#eId')); 

Tuttavia, il primo funziona e il secondo no. Perché, qual è la differenza tra i tre?

Gli docs sono di scarso aiuto. Sembrano implicare che "$" è solo per concatenare, ad es. element(by.css('#eId')).element($('#childId')); o "Seleziona il primo elemento, quindi seleziona il secondo elemento all'interno del primo elemento." Tuttavia, ho visto esempi con $ utilizzato per selezionare il primo elemento

Ad ogni modo, questo è un sacco di testo per "Quali sono le differenze tra i tre (by.css, $ e $$)?"

+1

Ho visto questo perché aveva "bling bling" nel titolo lol :) – gerl

+2

Basta tenerlo gangsta yo. Ad ogni modo, apparentemente "bling bling" è un vero soprannome per la scorciatoia "$$", dalla lettura degli altri post qui. Inoltre, se ho capito bene, non puoi cercare post/google con simboli come "$" o "#", ecc, quindi ho incluso il nickname nel nome. – VSO

+0

Ti prendo. Va tutto bene nel cappuccio. : D – gerl

risposta

21

$ e $$ sono scorciatoie solo convenienti.

$("selector") è un'alternativa per element(by.css("selector")).

$$("selector") è un'alternativa per element.all(by.css("selector")).


FYI, citazione dal source code:

ElementFinder.prototype.$ = function(selector) { 
    return this.element(webdriver.By.css(selector)); 
}; 

ElementArrayFinder.prototype.$$ = function(selector) { 
    return this.all(webdriver.By.css(selector)); 
}; 

E il actual commit che inizialmente ha fatto accadere.

+0

Chiaro e conciso, grazie. Ho trovato $ e $$ al lavoro. Immagino che mi stia confondendo con le basi. Stavo facendo element. $() Invece di solo $(). Grazie. Lol, mi sento come se stessimo costruendo un database di basi goniometriche qui se continuo a non riuscire a scrivere script. – VSO