Можно ли использовать WebDriverWait для элемента, который уже был определен? - PullRequest
0 голосов
/ 25 июня 2019

Я создаю инфраструктуру автоматизации, которая использует объектную модель страницы (POM) и имеет файл класса с именем HomePage.

Я уже объявил элемент, используя:

[FindsBy(How = How.Id, Using = "TextField1")]
private IWebElement FirstTextField{ get; set; }

Я объявил свой WebDriverWait, как показано ниже:

WebDriverWait wait = new WebDriverWait(driver,TimeSpan.FromSeconds(30));

У меня есть метод в HomePage.cs, который называется Validate (), и в этом я хочу использовать WebDriverWait следующим образом:

wait.Until(ExpectedConditions.ElementIsVisible(FirstTextField))

Как я могу использовать WebDriverWait таким образом, вместо того, чтобы использовать локатор По:

wait.Until(ExpectedConditions.ElementIsVisible(By.Id("TextField1")));

1 Ответ

0 голосов
/ 25 июня 2019

ExpectedConditions.ElementIsVisible() не имеет перегрузки для IWebElement в C # ExpectedConditions .Вы можете использовать пользовательскую реализацию

public static Func<IWebDriver, IWebElement> ElementIsVisible(IWebElement element)
{
    return (driver) =>
        {
            try
            {
                return return element.Displayed ? element : null;
            }
            catch (StaleElementReferenceException)
            {
                return null;
            }
        };
}

Использование:

wait.Until(ElementIsVisible(FirstTextField));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...