6

i have this html code:

<select name="category" id="category">
    <option value="0">&laquo;Seleziona la categoria&raquo;</option>
    <option value='1' style='background-color:#ddd' disabled="disabled" id='cat1' >-- VEICOLI --</option>
    <option value='2'  id='cat2' >Auto</option>
</select>

and i have to select the WebElement identified by the tag option with text Auto. I try some solution like:

d.findElement(By.xpath("/select[@id=category]/option[@id=cat2]")).click();
d.findElement(By.xpath("/select[@id=category]/option[text()='Auto']")).click();
d.findElement(By.xpath("//select[@id=category]/option[Auto]")).click();

but everyone gives me:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"/select[@id=category]/option[@id=cat2]"} ( and other xpath i tried)
Command duration or timeout: 1.52 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html

what is the right syntax? can someone help me?

2
  • read stackoverflow.com/questions/7232544/… Commented May 12, 2012 at 18:48
  • 1
    I would suggest that if you know the ID of the option you just use d.findElement(By.id("cat2")); It's simple, will always work while that ID is there and requires no XPath knowledge. If you are searching for an element that has a known ID there is no need to invoke XPath. Commented May 14, 2012 at 15:30

1 Answer 1

16

You don't have your XPath syntax right. You need quotes round the text attribute values you're matching against. Try:

d.findElement(By.xpath("//select[@id='category']/option[@id='cat2']")).click();
Sign up to request clarification or add additional context in comments.

1 Comment

XPath is bang on, although you could shrink it even further by doing d.findElement(By.xpath("//option[@id='cat2']")).click();

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.