Can anyone please tell me, if there is any mistake with my xpath. I have made it dynamic, to accept values from the parameter passed.

Xpath used in my code as :

wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//div[@id='categories_block_left']/div[1]/ul[1]/li/a[contains(text(),'"+subCategory+"')]/Preceding-sibling::span[1]")));

Xpath I am getting on run time in the console after execution:

//div[@id='categories_block_left']/div[1]/ul[1]/li/a[contains(text(),'Tops')]/Preceding-sibling::span[1]

If I try to inspect above(runtime) by mentioning xpath in Firpath console, it is getting detected. But selenium is not able to detect this element.

Here is page URL:

http://automationpractice.com/index.php?id_category=3&controller=category

In the eclipse console I am getting error as :

Expected condition failed: waiting for presence of any elements located by By.xpath: //div[@id='categories_block_left']/div[1]/ul[1]/li/a[contains(text(),'Tops')]/Preceding-sibling::span[1]
SyntaxError: Failed to execute 'evaluate' on 'Document':