Рассмотрим следующий пример, где известен идентификатор элемента ul
, и мы хотим, чтобы Click()
содержал его элемент li
, если li.Text
равно определенному тексту.Когда следует использовать XPath?
Вот два рабочих решения этой проблемы:
Метод 1: Использование XPath
ReadOnlyCollection<IWebElement> lis = FindElements(By.XPath("//ul[@id='id goes here']/li"));
foreach (IWebElement li in lis) {
if (li.Text == text) {
li.Click();
break;
}
}
Способ 2: Используя ID и тэгу
IWebElement ul = FindElement(By.Id("id goes here"));
ReadOnlyCollection<IWebElement> lis = ul.FindElements(By.TagName("li"));
foreach (IWebElement li in lis) {
if (li.Text == text) {
li.Click();
break;
}
}
Мой вопрос: когда мы должны использовать XPath, а когда нет?
Я предпочитаю использовать XPath только при необходимости. Для этого конкретного примера я считаю, что XPath совершенно не нужен, но когда я просмотрел эту конкретную проблему в StackOverflow, кажется, что большинство пользователей по умолчанию используют XPath.
Используйте все, с чем вам удобнее! Прочитайте недавнюю дискуссию здесь: http://stackoverflow.com/q/34521441/3124333 – SiKing