Вы можете непосредственно найти элемент, используя его текст в xpath.
Вы можете сделать это следующим образом:
WebElement element = driver.findElement(By.xpath("//div[@id='widgetFilters']//span[@class='a-declarative']//span[contains(text(),'Books')]"));
element.click();
И если вы хотите параметризовать xpath и хотите получить его, используя Строка, то вы можете сделать это как:
String filterName = "Books";
WebElement element = driver.findElement(By.xpath("//div[@id='widgetFilters']//span[@class='a-declarative']//span[contains(text(),'"+filterName+"')]"));
element.click();