Работа с таблицей на сайте

Kirillzenp

Client
Регистрация
27.02.2018
Сообщения
100
Реакции
1
Баллы
18
Ребята! Как настроить клик по ячейке с Кф этой таблицы на сайте. В переменной есть играющие команды, исход, Кф. Нужно правильно попасть в ячейку. В таблице могут быть одинаковые Кф, поэтому нельзя настроить клик по InnerText.

Допустим нужно попасть в Россия - Египет П1(отмечено красным квадратиком)


upload_2018-3-10_17-47-5.png
 
  • Спасибо
Реакции: Kirillzenp
Ситуация такая же как недавно спрашивали, советовал xPath.
В той ситуации парень так и не смог кликнуть по вытянутому элементу, он вытянул href.
В моем же случае нет href ссылок. Как совершить клик по выделенному элементу?
upload_2018-3-11_0-13-37.png
 

Вложения

  • upload_2018-3-11_0-11-36.png
    upload_2018-3-11_0-11-36.png
    49,3 KB · Просмотры: 702
Скиньте урл страницы, попробуем сделать шаб, если там не много мороки.
 
  • Спасибо
Реакции: Kirillzenp
5...20 минут и сделаю...
 
  • Спасибо
Реакции: Kirillzenp
C#:
Развернуть Свернуть Копировать
Tab tab = instance.MainTab;
string match_title_text = project.Variables["match_title_text"].Value; // в переменной наш заголовок матча "Буллетс — Олд Роуд"

// формируем наш xPath
// Выглядит типа так: ищем строку таблицы, которая содержит наш заголовок матча, а в ней уже ищем ячейку №3
string xpath_1 = "//tr[@class='table__row'][./td[@class='table__col _size_long']/div/span[@class='table__match-title-text' and contains(text(), '" + match_title_text + "')]]/td[3]";
HtmlElement ab = tab.MainDocument.FindElementByXPath(xpath_1, 0);
ab.Click(); // кликаем

//Возвращаем в проект зачение текста из той ячейки, по которой мы кликали (чтобы убедится что нашли то что надо)
var text = ab.InnerHtml;
return text;
Или весь шаб скачать.
 
  • Спасибо
Реакции: Kirillzenp
FА мо
C#:
Развернуть Свернуть Копировать
Tab tab = instance.MainTab;
string match_title_text = project.Variables["match_title_text"].Value; // в переменной наш заголовок матча "Буллетс — Олд Роуд"

// формируем наш xPath
// Выглядит типа так: ищем строку таблицы, которая содержит наш заголовок матча, а в ней уже ищем ячейку №3
string xpath_1 = "//tr[@class='table__row'][./td[@class='table__col _size_long']/div/span[@class='table__match-title-text' and contains(text(), '" + match_title_text + "')]]/td[3]";
HtmlElement ab = tab.MainDocument.FindElementByXPath(xpath_1, 0);
ab.Click(); // кликаем

//Возвращаем в проект зачение текста из той ячейки, по которой мы кликали (чтобы убедится что нашли то что надо)
var text = ab.InnerHtml;
return text;
Или весь шаб скачать.
А можно сделать так, чтобы открывала не по порядковому номеру ячейки, а по цифре, что в ней(которая у нас уже есть в переменнной)
 
Дык значение в ячейке там постоянно меняется в динамике без обновления страницы, точно надо?
 
  • Спасибо
Реакции: Kirillzenp
Заменить в коде
Код:
Развернуть Свернуть Копировать
/td[3]
на:
Код:
Развернуть Свернуть Копировать
/td[. ='11.50']
где 11.50 это нужный текст внутри ячейки. Ну или через переменную там его вставлять, как я match_title_text вставлял.

UPD: ну и изучайте сами xPath по ссылкам-мануалам в конце этого поста: путеводитель для новичков при использовании ZennoPoster+xpath+HtmlAgilityPack+POST\GET
 
  • Спасибо
Реакции: Kirillzenp
Заменить в коде
Код:
Развернуть Свернуть Копировать
/td[3]
на:
Код:
Развернуть Свернуть Копировать
/td[. ='11.50']
где 11.50 это нужный текст внутри ячейки. Ну или через переменную там его вставлять, как я match_title_text вставлял.
Это просто великолепно! То что я весь день пытался сделать, вы сделали за пол часа. Надеюсь завтра смогу пристроить данный алгоритм к своему шаблону. Огромное спасибо!!
 
  • Спасибо
Реакции: orka13
Скиньте урл страницы, попробуем сделать шаб, если там не много мороки.
Cкажите плз, весь день искал, не смог найти ответ. Как записать класс, если он не одинаков, как на скрине sportcolor1 level(...)
upload_2018-3-11_19-39-31.png
 
вопрос не ясен, больше подробностей.
 
//tr[@class="trEventChild sportColor1 level(number)"] На месте "number" разные числа, как мне следует написать
 
ну так вставьте туда переменную, в которой содержится нужное число, и склейте обратно в 1 строку. Это я так склеивал в string xpath_1 в том коде (в кавычках текстовое значение, а через "плюсик" добавлял переменную match_title_text. Это азы C#.
 
Я о другом. Я не знаю как //tr[@class="trEventChild sportColor1 level(number)"] написать, ведь здесь разные числа. Можно ли как-то class обрезать
 
upload_2018-3-11_19-59-22.png

это другой сайт
 
Код:
Развернуть Свернуть Копировать
//tr[contains(@class, 'trEventChild sportColor1 level')]
учите маны по xPath из того поста что я давал, и помимо скринов давайте ссылку на сайт, по скринах не проверить правильно ли синтаксис сложен.
 
  • Спасибо
Реакции: Kirillzenp
Код:
Развернуть Свернуть Копировать
//tr[contains(@class, 'trEventChild sportColor1 level')]
учите маны по xPath из того поста что я давал, и помимо скринов давайте ссылку на сайт, по скринах не проверить правильно ли синтаксис сложен.
Спасибо! То что надо. Обязательно выучу, все что вы дали.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)