Входные данные для тестирования Selenium

#selenium

#selenium

Вопрос:

Я пытаюсь выполнить тест с помощью Selenium, чтобы проверить точное количество (и имя) входных данных на странице. Мне нужно, чтобы тест был связан с XPath элемента (идентификатором CSS), а не с меткой. Я пробовал с verifyAllFields() и регулярным выражением, но это не работает. Кто-нибудь может предложить несколько идей? Спасибо.

Ответ №1:

Я не уверен, какой вариант Selenium вы используете (Java, Ruby, C #), но вот пример C #:

 private List<IWebElement> getAllFields(IWebDriver driver)
{
  List<IWebElement> fields = driver.FindElements(By.XPath("//input[@type='text'])).ToList();
  fields.AddRange(driver.FindElements(By.XPath("//input[@type='password']")).ToList());
  fields.AddRange(driver.FindElements(By.XPath("//textarea")).ToList());

  return fields;
}
  

Я знаю, что вы хотели номер, но причина, по которой вы возвращаете список IWebElements, заключается в том, что вы заявили, что хотите имена этих элементов и количество. Итак, если у вас есть объект, тогда у вас есть текст, имя, количество и т.д..

Также есть предостережение к этому. Когда вы найдете элементы, он найдет как отображаемые, так и не отображаемые элементы, поэтому это может привести к неверному количеству, но есть простой LINQ, который разрешит это в зависимости от того, нужны ли вам только отображаемые входные данные.

 fields.RemoveAll(i => !i.Displayed)
  

это заявление прямо там удалит все поля ввода, которые не отображаются

Ответ №2:

Извлеките идентификатор CSS элемента ввода, который вы хотите подсчитать. Вы можете использовать эту функцию для получения количества входных элементов на странице.