Я бы вообще использовал другой подход.
Для клика я бы хотел два метода - WaitForControlToBeClickable и Click.
Первый способ - убедиться, что элемент виден. Это может быть повторно использовано во всех других ваших методах действия, которые вам понадобятся.
static bool WaitForControlToBeClickable(By SeleniumObject, int waitFor = 10)
{
try
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(waitFor));
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(SeleniumObject));
return true;
}
catch (Exception er)
{
return false;
throw er;
}
}
Далее вы создадите метод для щелчка и вызова предыдущего метода внутри:
public void Click(By SeleniumObject)
{
WaitForControlClickable(SeleniumObject);
driver.FindElement(SeleniumObject).Click();
}
Вы можете сохранить их в другом классе - CommonActions. Поэтому, как только вы создадите экземпляр этого теста, вы можете назвать его так:
commonAction.Click(MyObject);
Я также рекомендую хранить ваши объекты в хранилище объектов отдельно, которое вы вызываете своими действиями для создания тестов.