2013-06-06 18 views
6

Ho seguito le esercitazioni di xpath e controllato molti altri post, quindi non sono sicuro di cosa mi manchi. Sto semplicemente cercando di trovare il seguente elemento da XPath:Selenium WebDriver findElement (By.xpath()) non funziona per me

<input class="t-TextBox" type="email" test-id="test-username"/> 

Ho provato molte cose, come ad esempio:

element = findElement(By.xpath("//[@test-id='test-username']")); 

L'errore è Expression is not a legal expression.

sto usando Firefox su MacBook

Ogni suggerimento sarebbe molto apprezzato.

risposta

15
element = findElement(By.xpath("//*[@test-id='test-username']"); 
element = findElement(By.xpath("//input[@test-id='test-username']"); 

(*) - qualsiasi TagName

3

Si dovrebbe aggiungere il nome del tag nel XPath, come:

element = findElement(By.xpath("//input[@test-id='test-username']"); 
0

Non è stato specificato che tipo di elemento HTML che si sta tentando di eseguire una ricerca xpath assoluta. Nel tuo caso, è l'elemento di input.

Prova questo:

element = findElement(By.xpath("//input[@class='t-TextBox' and @type='email' and @test-  
id='test-username']"); 
2

la sintassi è completamente sbagliato .... è necessario dare findelement al driver

cioè il vostro codice sarà:

WebDriver driver = new FirefoxDriver(); 
WebeElement element ; 

element = driver.findElement(By.xpath("//[@test-id='test-username']"); 

// il tuo xpath è: "//[@test-id='test-username']"

suggerisco prova questo: "//*[@test-id='test-username']"

1

vi siete persi la parentesi di chiusura alla fine:

element = findElement(By.xpath("//[@test-id='test-username']")); 
0

corretta Xpath sintassi è simile:

//tagname[@value='name'] 

così si dovrebbe scrivere qualcosa del genere:

findElement(By.xpath("//input[@test-id='test-username']")); 
0

Proprio è necessario aggiungere * all'inizio di xpath e closi finalmente la parentesi.

element = findElement(By.xpath("//*[@test-id='test-username']")); 
0

È possibile utilizzare contiene anche:

element = findElement(By.xpath("//input[contains (@test-id,"test-username")]"); 
Problemi correlati