This may sound so simple but why there is no method to find element by its inner text without using xpath? for instance there is an element:
Some
I think this works in java.
WebElement chosenElement; List elements = driver.findElements(By.tagName("button")); for(WebElement element:elements){ if(element.getText().equals("Some Text")){ chosenElement = element; break; } }