Как сделать условие на С# двум html элементам?

Nekro

Client
Регистрация
01.08.2020
Сообщения
232
Благодарностей
24
Баллы
18
Здравствуйте.

Задача: взять ссылку с определённого блока в зависимости от наличия текста в другом блоке и положить в переменную.

Пример ситуации:


HTML:
<div id="main">

<div class="poster">
<h4>
<a href="sitelink1.ru">Cat</a>
</h4>
</div>

<div class="postarea">
<div class="flow_hidden">
<h5>
<a href="site2link.ru" rel="nofollow">Dog</a>
</h5>
</div>
</div>

</div>

Логика: ЕСЛИ div c ID "poster" содержит в h4 слово "cat", ТО взять ссылку в блоке div id="main" > div class="postarea" > div class="flow_hidden" > h5 > и положить в переменную "animal".

Скажите пожалуйста, как составляются подобные условия? Можно даже любой другой пример, чтобы я понял от чего отталкиваться. Много где требуется использовать подобное условие, чтобы брать ссылку именно с нужного места.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Здравствуйте.

Задача: взять ссылку с определённого блока в зависимости от наличия текста в другом блоке и положить в переменную.

Пример ситуации:


HTML:
<div id="main">

<div class="poster">
<h4>
<a href="sitelink1.ru">Cat</a>
</h4>
</div>

<div class="postarea">
<div class="flow_hidden">
<h5>
<a href="site2link.ru" rel="nofollow">Dog</a>
</h5>
</div>
</div>

</div>

Логика: ЕСЛИ div c ID "poster" содержит в h4 слово "cat", ТО взять ссылку в блоке div id="main" > div class="postarea" > div class="flow_hidden" > h5 > и положить в переменную "animal".

Скажите пожалуйста, как составляются подобные условия? Можно даже любой другой пример, чтобы я понял от чего отталкиваться. Много где требуется использовать подобное условие, чтобы брать ссылку именно с нужного места.
Вам идеально подойдет метод Xpath
Код:
//h4//a[text()="Cat"]//parent::*//parent::*//parent::*//h5//a[@href]
Создаете кубик с такими параметрами:
61931

61936
61933
И если ваш код вверху реален, то будет xpath код ловить вашу ссылку.

Инструкция по Xpath.
 
  • Спасибо
Реакции: Nekro

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
Скажите пожалуйста, как составляются подобные условия?
Используй if/else
C#:
if (tab.FindElementByXpath("xpath",0))
{
    // выполняем код
}
else if (tab.FindElementByXpath("xpath_2",0))
{
    // выполняем код
}
Если у тебя только одна ветка, то условия можно составлять через xpath.
 
  • Спасибо
Реакции: Nekro

Nekro

Client
Регистрация
01.08.2020
Сообщения
232
Благодарностей
24
Баллы
18
Вам идеально подойдет метод Xpath
Спасибо! Правда сработало. Я не думал, что Xpath может такое. Буду пользоваться этим решением. В этом примере элементы близко относительно друг друга. А если "километр" кода и первый элемент находится сверху, а второй внизу, независимо друг от друга. Тоже реально через xpath создать подобное условие?


Используй if/else
C#:
if (tab.FindElementByXpath("xpath",0))
{
    // выполняем код
}
else if (tab.FindElementByXpath("xpath_2",0))
{
    // выполняем код
}
Если у тебя только одна ветка, то условия можно составлять через xpath.
Вот я примерно так себе это представлял. Попробую и это решение. Только сначала научусь на c# хотя бы добавлению в переменные.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Спасибо! Правда сработало. Я не думал, что Xpath может такое. Буду пользоваться этим решением. В этом примере элементы близко относительно друг друга. А если "километр" кода и первый элемент находится сверху, а второй внизу, независимо друг от друга. Тоже реально через xpath создать подобное условие?



Вот я примерно так себе это представлял. Попробую и это решение. Только сначала научусь на c# хотя бы добавлению в переменные.

Все реально, главное научиться пользоваться этими вставками:
C#:
/parent::*             # непосредственный родитель
/ancestor::*           # все родители
/following-sibling::*  # все следующие братья
/preceding-sibling::*  # все предыдущие братья
/following::*          # все следующие элементы кроме потомков
/preceding::*          # все предыдущие элементы кроме предков
/descendant-or-self::* # контекстный узел и все его потомки
/ancestor-or-self::*   # контекстный узел и все его предки
 
  • Спасибо
Реакции: Nekro и sw_sw

kolik

Client
Регистрация
11.12.2017
Сообщения
47
Благодарностей
8
Баллы
8
Привет форумчане, помогите как через xPath кликнуть по ссылке
Код:
//*[@id="res_views424052"]/a[@class='surf_ckick']/div

424052 постоянно меняется в 5 версии все работает без нареканий, в 7 даже в классическом варианте не может найти по кубику ссылку
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Привет форумчане, помогите как через xPath кликнуть по ссылке
Код:
//*[@id="res_views424052"]/a[@class='surf_ckick']/div

424052 постоянно меняется в 5 версии все работает без нареканий, в 7 даже в классическом варианте не может найти по кубику ссылку
попробуй
//*[contains(@id,'res_views')]/a[@class='surf_ckick']/div
 
  • Спасибо
Реакции: kolik

kolik

Client
Регистрация
11.12.2017
Сообщения
47
Благодарностей
8
Баллы
8

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