- Регистрация
- 06.12.2016
- Сообщения
- 50
- Благодарностей
- 9
- Баллы
- 8
Добрый день.
Разбираюсь с применением Xpath. В верхней части страницы http://www.bing.com/ есть семь ссылок. Если их посмотреть через FirePath, то они выглядят так:
Преобразуем к виду
или
или
Все три варианта конструкций работают в FirePath и находят семь совпадений:
Но при вставке этих конструкций в метод FindElementsByXPath ссылки не находятся.
Глядя на эти ссылки в дереве элементов видно, что у некоторых тэгов есть атрибут id. И, если с учетом этого изменить конструкцию на такую:
получим список из искомых ссылок. Вопрос, почему в PM не работают конструкции, которые работают в FirePath? Может синтаксис в PM как-то отличается от FirePath?
Разбираюсь с применением Xpath. В верхней части страницы http://www.bing.com/ есть семь ссылок. Если их посмотреть через FirePath, то они выглядят так:
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[1]/a
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[2]/a
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[3]/a
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[4]/a
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[6]/a
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[7]/a
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[8]/a
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[2]/a
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[3]/a
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[4]/a
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[6]/a
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[7]/a
html/body/table/tbody/tr/td/div/div[3]/div/ul/li[8]/a
Код:
/html/body/table/tbody/tr/td/div/div[3]/div/ul/li[@id]/a
Код:
//div[3]/div/ul/li[@id]/a
Код:
//div[3]/div/ul/li/a
Код:
var links = instance.ActiveTab.FindElementsByXPath("/html/body/table/tbody/tr/td/div/div[3]/div/ul/li[@id]/a");
// var links = instance.ActiveTab.FindElementsByXPath("//div[3]/div/ul/li[@id]/a");
// var links = instance.ActiveTab.FindElementsByXPath("//div[3]/div/ul/li/a");
if (links.Count==0) throw new Exception("ERROR");
// Количество ссылок
project.Variables["linksCount"].Value = Convert.ToString(links.Count);
// Обходим все элементы из коллекции
foreach (var link in links.Elements)
{
// Получаем и записываем в переменную ссылку из элемента
project.Variables["link"].Value = link.GetAttribute("href");
// Записываем переменную в список
project.Lists["links"].Add(project.Variables["link"].Value);
}
Код:
/html/body/table[@id]/tbody/tr/td[@id]/div[@id]/div[@id]/div/ul[@id]/li[@id]/a