- Регистрация
- 17.03.2016
- Сообщения
- 18
- Благодарностей
- 2
- Баллы
- 3
Помогите пожалуйста обработать элементы страницы.
Есть много таблиц вида:
Нужна только та, у которой:
Есть много таблиц вида:
Код:
<table id="table19">
<thead>
<tr>
<th>
<button type="button" id="button-19">Кнопка 1</button>
<span class="title">SearchText</span>
<span class="sub-title">Описание SearchText</span>
</th>
</tr>
</thead>
<tbody>…<tbody>
</table>
- в span.title inntertext - значение SearchText
- в table#id - значение "table" + 19
- Удалить все table, у которых id не 19
- Выполнить Click на THEAD нужной
Код:
// получаем значения
var search_text = project.Variables["search_text "].Value;
// вспомогательные переменные
List<string> listRows = new List<string>();
var active_id = "";
// XPATH
// get document
Document doc = instance.MainTab.MainDocument;
// отбираем все THEAD
HtmlElementCollection heCol = doc.FindElementsByXPath(@"//div[@id='container']/table/thead/tr");
HtmlElement[] he = heCol.Elements;
//вытаскиваем outerhtml из каждого элемента
var data = heCol.AttributesToString("outerhtml");
// REGEX
// Парсим содержимое <th> всех таблиц и помещаем в список
var regexRow = new Regex( @"(?<=<th[^<>]*?>)[\w\W]*?(?=</th>)" );
regexRow.Matches(data).Cast<Match>().ToList().ForEach(m=>listRows.Add(m.Value));
// Ищем нужный <th> на странице
for(int i=0; i < listRows.Count; i++) {
// читаем строку из списка
var str = listRows[i];
// проверяем содержание текста в строке, если есть совпадение - кликаем по thead
if (str.Contains(@"<span class=""title"">" + search_text + "</span>")) {
active_id = Regex.Match( str, @"(?<=id=""button-).*?(?="">)" ).Value;
// ======================
// вот тут проблема - нужно подняться наверх до thead и кликнуть по нему
// ======================
he[i].Click();
break;
}
}
// отбираем все TABLE
HtmlElementCollection heColTable = doc.FindElementsByXPath(@"//div[@id='container']/table[not(@id='table" + active_id + "')]");
listRows.Clear();
var data_table = heColTable.AttributesToString("outerhtml");
// REGEX
// Парсим все таблицы и помещаем в список
var regexTable = new Regex( @"[\w\W]*?" );
regexTable.Matches(data_table).Cast<Match>().ToList().ForEach(m=>listRows.Add(m.Value));
// Ищем нужную таблицу на странице
for(int i=0; i < listRows.Count; i++) {
// ======================
// тут тоже проблема - нужно удалить все лишние TABLE
// ======================
heColTable.Remove(i);
}