I've been through the xpath tutorials and checked many other posts, hence I'm not sure what I'm missing. I'm simply trying to find the following element by xpath:
<input class="t-TextBox" type="email" test-id="test-username"/>
I've tried many things, such as:
element = findElement(By.xpath("//[@test-id='test-username']"));
The error is Expression is not a legal expression
.
I'm using Firefox on MacBook
Any suggestion would be greatly appreciated.
You haven't specified what kind of html element you are trying to do an absolute xpath search on. In your case, it's the input element.
Try this:
element = findElement(By.xpath("//input[@class='t-TextBox' and @type='email' and @test-
id='test-username']");
You missed the closing parenthesis at the end:
element = findElement(By.xpath("//[@test-id='test-username']"));
You should add the tag name in the xpath, like:
element = findElement(By.xpath("//input[@test-id='test-username']");
You can use contains too:
element = findElement(By.xpath("//input[contains (@test-id,"test-username")]");
your syntax is completely wrong....you need to give findelement to the driver
i.e your code will be :
WebDriver driver = new FirefoxDriver();
WebeElement element ;
element = driver.findElement(By.xpath("//[@test-id='test-username']");
// your xpath is: "//[@test-id='test-username']"
i suggest try this :"//*[@test-id='test-username']"
Just need to add *
at the beginning of xpath and closing bracket at last.
element = findElement(By.xpath("//*[@test-id='test-username']"));
Correct Xpath
syntax is like:
//tagname[@value='name']
So you should write something like this:
findElement(By.xpath("//input[@test-id='test-username']"));
Source: Stackoverflow.com