Автоматизация Selenium с использованием элементов C# POM и методов элементовC#

Место общения программистов C#
Ответить
Anonymous
 Автоматизация Selenium с использованием элементов C# POM и методов элементов

Сообщение Anonymous »

Итак, я поигрался с POM (объектной моделью страницы) Selenium, в частности с аннотацией FindsBy.

Код: Выделить всё

[FindsBy(How = How.XPath, Using = "//a[@attribute='some_value']")]
public IWebElement ElementDescription;
Но я столкнулся с проблемами, связанными с ожиданием объектов и вызовом функции WebDriverWait с тем же локатором, который использовался в аннотации FindsBy:

Код: Выделить всё

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.XPath("//a[@attribute='some_value']")));
Это не очень удобно в обслуживании, поскольку тогда вам придется обновлять несколько локаторов при изменении локатора объекта.
Мой вопрос: будет ли метод для каждая функция работает лучше, если сам метод ожидает объект перед его использованием?

Код: Выделить всё

 public IWebElement ElementDescription(int seconds = 30)
{
const string locator = "//a[@attribute='some_value']";

// Wait for the element to be visible before returning it
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(seconds));
IWebElement element = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.XPath(locator)));

// Return the element
return element;
}
Многие элементы, с которыми я работаю, создаются динамически в зависимости от различных вариантов, которые вы делаете в приложении, поэтому мне приходится ждать, пока загрузятся данные или элементы станут видимыми.>

Подробнее здесь: https://stackoverflow.com/questions/792 ... nt-methods
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»