If you only need to verify the text, there there is no mighty need to have Selenium do this specifically. So here is a solution that does it via Jquery.
Note, driver.Manage().Timeouts().ImplicitWait only needs to ever be set once, unless you are changing the value to something different.
Also note, my example requires more than implicit wait between loops.
using OpenQA.Selenium.Support.Extensions;
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
do
{
vehicleTitle = driver.ExecuteJavascript("return $('#vehicleRateSummary > tbody > tr:nth-child(1) > th').text()");
driverTitle = driver.ExecuteJavascript("return $('#vehicleRateSummary > tbody > tr:nth-child(3) > th').text()");
System.Threading.Thread.Sleep(100); //Milliseconds
}
while (vehicleTitle == "");
Now, I can't guarantee that works without the page to test it myself, but you can make sure that works by going to your browser Developer Console, and pasting the raw JQuery at the appropriate time you wish to pull the text $('#vehicleRateSummary > tbody > tr:nth-child(1) > th').text()
Now, if that doesn't work, let me know. Particularly, if your page does not use JQuery, we can work something else out. If this doesn't work, it might help more for us to see the html within the table after it updates with the values you are searching for (vehicleRateSummary table).
Also, important note: th is normally a table header row cell. Whereas td is normally a body row cell. Are we sure that is what we should be looking for here? Special case? Just making sure we are indeed searching for the right elements.
Now, here is a solution that can be used everywhere in your project, which will rewrite your above code (if you'd like it):
//Goes in some static tools class. Must be a static class.
private static void WaitUntil(this IWebDriver driver, Func Condition, float timeout)
{
float timer = timeout;
while (!Condition.Invoke() && timer > 0f)
{
System.Threading.Thread.Sleep(500);
timer -= 0.5f;
}
System.Threading.Thread.Sleep(500);
}
//And your new code
driver.WaitUntil(() => driver.ExecuteJavascript("return $('#vehicleRateSummary > tbody > tr:nth-child(1) > th').text().length > 0"));
driver.WaitUntil(() => driver.ExecuteJavascript("return $('#vehicleRateSummary > tbody > tr:nth-child(3) > th').text().length > 0"));