2013-06-06 7 views
6

Ich habe die xpath-Tutorials durchgesehen und viele andere Posts überprüft, daher bin ich mir nicht sicher, was mir fehlt. Ich versuche einfach das folgende Element von XPath zu finden:Selenium WebDriver findElement (By.xpath()) funktioniert nicht für mich

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

ich viele Dinge ausprobiert habe, wie zum Beispiel:

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

Der Fehler Expression is not a legal expression ist.

Ich bin mit Firefox auf MacBook

Jeder Vorschlag würde sehr geschätzt werden.

Antwort

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

(*) - jede tagname

3

Sie sollten den Tag-Namen in der XPath verwenden, wie:

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

Sie haben nicht angegeben, welche Art von HTML-Element, das Sie versuchen, Führe eine absolute xpath-Suche durch. In Ihrem Fall ist es das Eingabeelement.

Try this:

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

Ihre Syntax völlig falsch ist .... Sie brauchen findelement dem Fahrer

zu geben, dh der Code wird:

WebDriver driver = new FirefoxDriver(); 
WebeElement element ; 

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

// Ihr xpath ist: "//[@test-id='test-username']"

Ich schlage vor, versuchen Sie dies: "//*[@test-id='test-username']"

1

Sie verfehlten die schließende Klammer am Ende:

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

Richtige Xpath Syntax ist wie:

//tagname[@value='name'] 

So sollten Sie so etwas schreiben:

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

Nur müssen am Anfang von Xpath und Closi * hinzufügen Endlich die Halterung.

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

Sie verwenden können, enthält auch:

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