rediffusion
11/7/2017 - 10:03 AM

2. ancestor-or-self

Оси XPath

//Переходим на страницу сообщества (нужно для демонстрации работы
Tab Tab1 = instance.ActiveTab;
string strTargetURL = "https://vk.com/live";
if (Tab1.URL!=strTargetURL) {
	Tab1.Navigate(strTargetURL);
	Tab1.WaitDownloading();
}

//Ось ancestor-or-self (предок-или-сам) содержит всех предков контекстного узла, отвечающих заданным условиям. Кроме того, в отличие от оси ancestor в оси ancestor-or-self сам исходный элемент также рассматривается как потенциально целевой

//Пример 1: конструкция ниже вернёт тот же самый div с классом 'page_post_sized_thumbs  clear_fix'
project.SendInfoToLog("1. ancestor-or-self: " + Tab1.FindElementsByXPath("//div[starts-with(@class, 'page_post_sized_thumbs')]/ancestor-or-self::div[1]").Count);
//...в отличие от строки выше (с ancestor-or-self) при использовании ancestor будет возвращен родительский div с классом 'page_post_queue_narrow'
project.SendInfoToLog("1. ancestor-or-self: " + Tab1.FindElementsByXPath("//div[starts-with(@class, 'page_post_sized_thumbs')]/ancestor::div[1]").Count);