#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 элемента ввода, который вы хотите подсчитать. Вы можете использовать эту функцию для получения количества входных элементов на странице.