Создаю приложение, в котором требуется мне взять базу с Avito, на нужной страничке имеется кнопка
<div class="DnHhI"><span class="_2bexo">Загрузить еще</span></div>
Появляется она после нескольких прокрутов.
Прокручиваю страницу с помощью ((IJavaScriptExecutor)chr).ExecuteScript("var timeId=setInterval(function(){window.scrollY<document.body.scrollHeight-window.screen.availHeight?window.scrollTo(0,document.body.scrollHeight):(clearInterval(timeId),window.scrollTo(0,0))},500);");
Пытался нажать с помощью:
chr.FindElement(By.XPath("span[@class='_2bexo']").Click();
И
chr.FindElement(By.XPath("div[@class='DnHhI']").Click();
А также
((IJavaScriptExecutor)chr).ExecuteScript("arguments[0].click()", chr.FindElement(By.XPath("span[@class='_2bexo']")));
Ну и
((IJavaScriptExecutor)chr).ExecuteScript("arguments[0].click()", chr.FindElement(By.XPath("div[@class='DnHhI']")));
В каждом из случаев приложение зацикливается на клике по кнопке
Всем твоим xpath не хватает //
Твой:
chr.FindElement(By.XPath("span[@class='_2bexo']").Click();
А должно быть:
chr.FindElement(By.XPath("//span[@class='_2bexo']").Click();
и т.д., но лучше использовать xpath с текстом:
chr.FindElement(By.XPath("//span[.='Загрузить еще']").Click();
Или:
//div[@data-marker="items"]/div[last()]/span
Или, как пример, можно использовать css selectorы:
div[data-marker="items"] > div:last-child span
[data-marker="items"] > div:nth-child(2) span
Тебе нужно указать нормальный xpath или CssSelector. Ты пытаешся использовать поиск по названию автоматически генеррированного имени класса (судя по названию класса).
А это тебе маловероятно что принесет достаточно хорошую воспроизводимость/стабильность кода.
Как выглядит адекватный xpath?
chr.FindElement(By.XPath(".//div[@data-marker='items']/div/div/../span").Click();
//это я рандомно из головы написал, просто влом разбиратся с структурой страницы
Да и вообще разберись нормально с синтаксисом xpath-а. Это очень облегчает жизнь в целом. Твоя проблема в даном вопросе именно в том что ты не умеешь писать хорошие селекторы. А писать их вместо тебя -- это плохая идея. Ты банально ничему не научишся. Это один из основных навыков при работе с селениумом.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я изменяю настройки прокси сервера windows с помощью
Уже неделю ломаю голову, не могу понять как сделатьДелаю робота для авторизации на сайте и парсинга
Скажите, есть ли возможность, чтобы GridRowDefinition у которого Height - Auto, как-бы не видел тот или иной элемент, то есть схлопывался так же, как если...