Q: Is it possible to use more methods to same element?
A: You can do that, but you wouldn't need to. If you check for clickability, like in the code snippet you provided,
selenium makes a check for elementToBeVisible and elementToBeEnabled. So, you don't have to write
wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.XPath("//tr[@id='messageGrid_DXDataRow0']/td[3]")));
wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//tr[@id='messageGrid_DXDataRow0']/td[3]")));
Instead, just check for clickability and the visibility part will be automatically covered.
Q: Why I still have exceptions with stale element and similar exceptions?
A: Although, this que can be answered with absolute correctness only after seeing code snippet and the error, but, I'll tell you a likely scenario because of which you might be getting the error.
- Your element becomes (visible and enabled) i.e. clickable and then the page loading takes place (like in case of a dashboard load or other async calls), making the element non visible and when you try to click a non-visible element that was clickable just a second before, you get StaleElementException.