2010-11-15 6 views
9

Sto cercando di ottenere elementi con jquery e selenium IDe 1.0.8.Ottieni elemento con jquery e selenio IDE 1.0.8

<td>storeValue</td> 
<td>$('#result').find('img').filter('[alt=&quot;NameOfPhoto&quot;]').eq(0)</td> 
<td></td> 

E nel registro ottengo

[error] Element $('#result').find('img').filter('[alt="NameOfPhoto"]').eq(0) not found 

Quando ho messo questo comando in Firebug ottengo questo elemento:/

Perché non funziona?

MODIFICA: In alternativa, ad esempio, puoi fornirmi il codice su come ottenere l'id del primo oggetto con tag JAVA nella pagina principale di StackOverflow.

TAG:

<a rel="tag" title="show questions tagged 'java'" class="post-tag" href="https://stackoverflow.com/questions/tagged/java">java</a> 

e l'esempio risultano da:

<div id="question-summary-4303985" class="question-summary narrow"> 

è:

question-summary-4303985 

risposta

8

Sulla base degli altri post ho provato quanto segue e ha funzionato.

Aggiungere il codice sottostante per user-extensions.js:

function jQuery (selector) 
{ 
    return selenium.browserbot.getUserWindow().jQuery(selector); 
} 

si può quindi accedere a qualsiasi funzione di jQuery utilizzando la parola chiave jQuery al posto del $. Assicurati che la pagina che stai testando faccia riferimento al file jQuery js.

+0

Ottimo! Questo ha funzionato per me! Stavo provando ciò che è stato suggerito in questa risposta http://stackoverflow.com/questions/2814007/how-do-i-add-a-jquery-locators-to-selenium-remote-control/2819798#2819798 ottenuto un errore che jQuery non è una funzione, quindi ha aggiunto lo script sopra come hai detto tu. Lavorato! Grazie! –

0

prova utilizzando jQuery anziché $(). Il segno del dollaro ha un significato diverso nel selenio.

EDIT

Per quanto posso dire, non è possibile utilizzare jQuery per selezionare gli elementi. Le ricerche Google non hanno restituito nulla. Basta usare Xpath.

0

Esempio di memorizzare la data corrente con Javascript e l'eco nella console di log selenio utilizzando ${}:

<tr> 
    <td>store</td> 
    <td>javascript{new Date}</td> 
    <td>foo</td> 
</tr> 
<tr> 
    <td>echo</td> 
    <td>${foo}</td> 
    <td></td> 
</tr> 

Come si può vedere da usare negozio con un risultato di un'espressione JavaScript aggiungere javascript{} arround l'espressione .

L'esempio che utilizza javascript{storedVars['bar']} per emettere la variabile memorizzata.

<tr> 
    <td>store</td> 
    <td>javascrip{jQuery('#result').find('img').filter('[alt="NameOfPhoto"]').eq(0)}</td> 
    <td>bar</td> 
</tr> 
<tr> 
    <td>open</td> 
    <td>javascript{storedVars['bar']}</td> 
    <td></td> 
</tr> 

JavaScript Selenio:

Con javascript{alert('hello')} è possibile eseguire JavaScript/jQuery nei campi di valore.

C'è anche un'estensione per selenio per mostrare che vars sono memorizzati: http://reallysimplethings.wordpress.com/2010/09/28/the-stored-variables-viewer-plugin-for-selenium-ide-v1-3-released/

+0

Non funziona:/Ottengo: errore [errore] Eccezione imprevista: messaggio -> jQuery non è una funzione, fileName -> chrome: // selenium-ide/content/selenium/scripts/selenium-api. js, lineNumber -> 2490, stack -> ("javascript {jQuery ('# result'). find ('img'). filter ('[alt = \" NameOfPhoto \ "]'). eq (0)}") – user278618

+0

Controllare la documentazione ufficiale su come conservare vars. – powtac

+0

Penso che user278618 abbia ragione, non potevo accedere a jQuery neanche io, e non sono sicuro che abbia qualcosa a che fare con le variabili memorizzate, correggimi se sbaglio. –

0

Hai impacchettato jQuery in vaso selenio? In caso contrario, non è possibile utilizzare questa sintassi.

+0

No, non lo faccio. Come fare questo? – user278618

+0

Se si utilizza Selenium RC, controllare il post di blog Jian http: //johnjianfang.blogspot.com/2009/04/how-to-use-jquery-per-creare-custom.html. Per IDE puoi aggiungere jquery come estensione utente. Fai riferimento ai documenti sul selenio. – Rajasankar

7

Per utilizzare jQuery con Selenio IDE, la posizione è sotto. (Assicurati di aver caricato jQuery nella tua pagina)

this.page().getCurrentWindow().wrappedJSObject.jQuery() 

È possibile memorizzare la posizione della funzione in una variabile di selenio.

<tr> 
    <td>store</td> 
    <td>this.page().getCurrentWindow().wrappedJSObject.jQuery</td> 
    <td>jq</td> 
</tr> 

Quindi è possibile utilizzare per le prove come:

<tr> 
    <td>assertEval</td> 
    <td>${jq}('div').attr('foo')</td> 
    <td>bar</td> 
</tr> 

Sopra corrisponde <div foo='bar' /> utilizzando jQuery.


Edit: In alternativa è possibile accedervi da:

this.browserbot.getUserWindow().jQuery 
selenium.browserbot.getUserWindow().jQuery 

fonte di alternativa: http://cssgreut.wordpress.com/2010/12/20/run-selenium-ide-tests-with-jquery-selectors/

+0

+1 per mostrare effettivamente la fonte! Questo sembra essere al di là della maggior parte delle persone che aiutano con il selenio. – Scottingham

0

provare questo istruzioni da German Rumm's blog

In primo luogo, scaricare Sizzle, che è un motore di selezione per jQuery e decomprimere sizzle.js in un conv posizione enient.
In secondo luogo, creare il file user-extensions.js vuoto. Il nome può essere qualunque cosa tu voglia, a proposito.
aggiungere questo alla user-extensions.js

PageBot.prototype.locateElementBySizzle = function(locator, inDocument) { 
    var results = []; 
    window.Sizzle(locator, inDocument, results); 
    return results.length > 0 ? results[0] : null; 
} 

In terzo luogo, andare al Selenio IDE, Opzioni -> Opzioni ... e aggiungere sizzle.js e user-extensions.js a “estensioni core selenio” .
Restart Selenio IDE (è sufficiente chiudere tutte le istanze di esso e aprirlo di nuovo), e ora è possibile utilizzare sfrigolio = (locator) in tutto il mondo, dove c'è bisogno di “localizzatore”

vostro selettore looklike:

#result img[alt="NameOfPhoto"]:eq(0)

selettori di jQuery proviene per lo più da selettori CSS, in modo da poterli utilizzare anche in selenio

css=cssSelector

Problemi correlati