2013-06-06 19 views
6

Przeszedłem przez samouczki xpath i sprawdziłem wiele innych postów, dlatego nie jestem pewien, czego mi brakuje. Ja po prostu próbuje znaleźć następujący element przez XPath:Selenium WebDriver findElement (By.xpath()) nie działa dla mnie

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

Próbowałem wielu rzeczy, takich jak:

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

błąd jest Expression is not a legal expression.

używam Firefoksa na MacBooku

Wszelkie sugestie będą bardzo mile widziane.

Odpowiedz

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

(*) - każda zmienna

3

Należy dodać nazwę znacznika w XPath, jak:

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

Nie podano, jaki rodzaj elementu html próbujesz wykonaj bezwzględne wyszukiwanie w xpath. W twoim przypadku jest to element wejściowy.

Spróbuj tego:

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

składnia jest całkowicie błędne .... trzeba dać findelement kierowcy

tj Twój kod będzie:

WebDriver driver = new FirefoxDriver(); 
WebeElement element ; 

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

// Twoja ścieżka xpath to: "//[@test-id='test-username']"

Proponuję wypróbować: "//*[@test-id='test-username']"

1

Przegapiłeś nawiasu zamykającego na końcu:

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

Prawidłowe Xpath składnia jest jak:

//tagname[@value='name'] 

Więc trzeba napisać coś takiego:

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

Wystarczy trzeba dodać * na początku xpath i closi W końcu w nawiasie.

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

Można użyć zawiera zbyt:

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