У меня есть пучок input[type=submit]
кнопок внутри GridView. id
s и name
s этих кнопок, хотя и предсказуемы, потому что они используют индексный номер, плохо подходят для автоматизации с использованием SpecFlow и Coded UI Tests. Мне трудно найти эти кнопки.Как найти элемент по пользовательскому атрибуту HTML с использованием кодированных пользовательских интерфейсов
Фрагмент из HTML доставлены в браузере:
<input type="submit" id="abc_xyz_0" data-task-id="123" value="Apply">
<input type="submit" id="qrs_tuv_0" data-task-id="345" value="Renew">
Текст кнопки является общим в каждой строке («Применить» и «Обновить»), но атрибут data-task-id
уникален. Я хотел бы использовать этот атрибут и значение, чтобы идентифицировать кнопку, на которую нужно щелкнуть. Я пытаюсь использовать SearchProperties
и FilterProperties
, но я получаю исключение:
System.NotSupportedException: DataTaskId свойства не поддерживается для этого элемента управления.
Как я пытаюсь найти управление:
HtmlInputButton button = new HtmlInputButton(document);
button.SearchProperties["data-task-id"] = "123";
// or button.SearchProperties["DataTaskId"] = "123";
Некоторые дополнительные детали:
- Окна 7
- Internet Explorer 11
- веб-сайт поставляется с
localhost
и помечен как «доверенный» в настройках безопасности параметров Интернета
Обновление: Спасибо обоим Marcel De Vries и AfroMogli для своих ответов. Марсель использует JavaScript для поиска элемента, а AfroMogli использует чистые C# и API CodedUI. Оба ответа работали одинаково хорошо, и я не заметил разницы в производительности между ними. Два одинаково хороших решения.
Мне нужно попробовать это. В идеале мне бы хотелось, чтобы решение не включало запуск JavaScript против браузера. –
Отлично, пожалуйста, вернитесь к нам о том, как это получилось :) – AfroMogli
Это сработало отлично! Мне также нравится, как это решение для чистого кодированного интерфейса. Я разрываюсь. Хотелось бы, чтобы я мог отследить ваши ответы и ответить на вопросы о дебатах. –