Задать вопрос
  • Как не подгружать картинки в selenium? Сделать программу менее затратной по ресурсам?

    HSGOD
    @HSGOD Автор вопроса
    Денис Юрьев, программа и у меня оффается на ПК, поставил вывод ошибок - 0 ошибок прога офф.
    Написано
  • Как не подгружать картинки в selenium? Сделать программу менее затратной по ресурсам?

    HSGOD
    @HSGOD Автор вопроса
    Вчера уже пробовал, но какая-то настройка в моем боте отменяет эту.....непонятно какая.
    Написано
  • Как не подгружать картинки в selenium? Сделать программу менее затратной по ресурсам?

    HSGOD
    @HSGOD Автор вопроса
    VoidVolker, Ну вот смотрите, у меня в браузере открывается канвас, как мне его отключать в программе?
    Написано
  • Как не подгружать картинки в selenium? Сделать программу менее затратной по ресурсам?

    HSGOD
    @HSGOD Автор вопроса
    VoidVolker, Просто помогите мне выкл все в браузере и всё
    Написано
  • Как не подгружать картинки в selenium? Сделать программу менее затратной по ресурсам?

    HSGOD
    @HSGOD Автор вопроса
    Я взял неплохой дедик 4 ядра 4 оперативка до этого все офались, а этот офает саму программу в момент боя с canvasom - ни сразу, а спустя пару боев (я так думаю чем длинее по времени длится процесс тем пк напряженнее и он офает прогу)
    Мне нужно просто не подгружать все эти html картинки и тогда все будет зае****
    Написано
  • Как не подгружать картинки в selenium? Сделать программу менее затратной по ресурсам?

    HSGOD
    @HSGOD Автор вопроса
    Ребят это классно конечно, но программа работает на дедике, мне просто нужно убрать картинки, подгружается игровой бой написанный на canvas

    <canvas width="1170" height="898" style="touch-action: none; width: 1170px; height: 898px; position: absolute; left: 0px; top: 0px; cursor: inherit;"></canvas>


    мне просто нужно не подгружать эти картинки.
    Написано
  • Как ввести что-нибудь в данное поле?

    HSGOD
    @HSGOD Автор вопроса
    Роман, можешь написать в теме ни комментарием, а снизу, чтобы я твой ответ выбрал подходящим
  • Как ввести что-нибудь в данное поле?

    HSGOD
    @HSGOD Автор вопроса
    Роман, ты гений! Узнал как это можно было сделать проще, но в любом случае всё из-за подкинутой тобою мысли, СПАСИБО БООЛЬШОЕ!!!
  • Как ввести что-нибудь в данное поле?

    HSGOD
    @HSGOD Автор вопроса
    Роман, у меня 2 программы, одна из них на вход в steam, не могу реализовать ввод логина в поле
    https://steamcommunity.com/login/home/?goto=market...
    Как я вижу проблема одна и та же - не поддаётся взаимодействию....
  • Как ввести логин в окно входа в Steam?

    HSGOD
    @HSGOD Автор вопроса
    при таком коде
    IWebElement loginInput = driver.FindElement(By.CssSelector("input.newlogindialog_TextInput_2eKVn"));
                loginInput.SendKeys("логин");


    вылезает ошибка вида:
    OpenQA.Selenium.NoSuchElementException: "no such element: Unable to locate element: {"method":"css selector","selector":"input.newlogindialog_TextInput_2eKVn"}
      (Session info: chrome=114.0.5735.199); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception"
  • Почему выдает ошибку ERROR_WRONG_USER_KEY?

    HSGOD
    @HSGOD Автор вопроса
    Я не разбираюсь в этой теме, впервые код написал, можете ли вы дать мне пример данного кода?@petermzg,
  • Почему выдает ошибку ERROR_WRONG_USER_KEY?

    HSGOD
    @HSGOD Автор вопроса
    На ночь глядя ни тот код скинул;)
    static string UploadCaptcha(string apiKey, byte[] captchaImageBytes)
        {
            using (WebClient client = new WebClient())
            {
                // Отправка запроса на загрузку капчи на сервер 2Captcha
                byte[] response = client.UploadData("https://2captcha.com/in.php", captchaImageBytes);
                string responseString = System.Text.Encoding.Default.GetString(response);
    
                // Извлечение идентификатора загруженной капчи из ответа
                string[] responseParts = responseString.Split('|');
                if (responseParts.Length >= 2)
                {
                    string captchaId = responseParts[1];
                    return captchaId;
                }
                else
                {
                    Console.WriteLine("Произошла ошибка при извлечении идентификатора загруженной капчи.");
                    return null;
                }
            }
        }
  • Как в коде поставить один цикл в ожидание не задевая всего кода?

    HSGOD
    @HSGOD Автор вопроса
    Роман, суть в том, что таймеры я уже добавил)))
    мне нужно чтобы переменная delaySecondGR (из-за частого повторения цикла) постоянно считывалась, то есть она(переменная) будет равна +-1 часу реального времени а программа будет проходить по циклу каждые 5 минут и вот нужно сделать так, чтобы программа уменьшала эту переменную на то кол-во времени сколько прошло с последней проверки переменной вплоть до 0
  • Как в коде поставить один цикл в ожидание не задевая всего кода?

    HSGOD
    @HSGOD Автор вопроса
    GeminiX, Слушай, я пересмотрел код и понял, что не совсем тот вопрос задал, вот тебе код, можешь подсказать, что я делаю не так после else, мне нужно чтобы значение delaySecondGR было выбрано рандомно и было = +-час, а потом с каждой проверкой цикла оно уменьшалось, а оно остаётся всё тем же.........

    TimeSpan initialDelay = TimeSpan.Zero;
                bool isFirstIteration = true;
                DateTime previousTime = DateTime.Now;
    
                while (true)
                {
                    DateTime now = DateTime.Now;
                    int minute = now.Minute;
    
                    if (delaySecondGR <= TimeSpan.Zero)
                    {
                        if ((minute >= 3 && minute <= 4) || (minute >= 8 && minute <= 9) || (minute >= 13 && minute <= 14) || (minute >= 18 && minute <= 19) || (minute >= 23 && minute <= 24) || (minute >= 28 && minute <= 29) || (minute >= 33 && minute <= 34) || (minute >= 38 && minute <= 39) || (minute >= 43 && minute <= 44) || (minute >= 48 && minute <= 49) || (minute >= 53 && minute <= 54) || (minute >= 58 && minute <= 59))
                        {
                            // Поиск кнопки карта
                            try
                            {
                                IWebElement mapButton = driver.FindElement(By.CssSelector("a[href='map.php'] b"));
                                mapButton.Click();
                            }
                            catch (NoSuchElementException)
                            {
                                // Поиск родительского элемента кнопки карта
                                IWebElement mapButton = driver.FindElement(By.CssSelector("a[href='map.php'] img.mm_item_icon"));
    
                                // Найти <img> внутри родительского элемента
                                IWebElement mapImage = mapButton.FindElement(By.CssSelector("img.mm_item_icon"));
    
                                // Выполнить действие с <img>
                                mapImage.Click();
                            }
    
                            // Поиск таблицы с данными
                            IWebElement dataTable = driver.FindElement(By.CssSelector("div.global_table_div.map_obj_table_div table.wb"));
    
                            // Поиск всех строк с данными в таблице
                            IReadOnlyCollection<IWebElement> dataRows = dataTable.FindElements(By.CssSelector("tr.map_obj_table_hover"));
    
                            // Поиск и клик на верхних стрелочках "»»»"
                            bool foundWorkplace = false;
                            foreach (IWebElement row in dataRows)
                            {
                                IWebElement arrowLink = row.FindElement(By.CssSelector("a[href*='object-info.php']"));
                                arrowLink.Click();
                                foundWorkplace = true;
                                break; // Кликнули на первой найденной стрелочке и прекращаем цикл
                            }
    
                            // Если место работы не было найдено, выводим сообщение в чат
                            if (!foundWorkplace)
                            {
                                Console.WriteLine("Место для работы не было найдено.");
                                return;
                            }
    
                            try
                            {
                                // Поиск картинки кнопки
                                IWebElement imageButton = driver.FindElement(By.CssSelector("div.getjob_hover.gtjob_center input.getjob_submitBtn"));
    
                                // Клик на картинку кнопки
                                Console.ForegroundColor = ConsoleColor.Cyan; // устанавливаем цвет
                                Console.WriteLine("Вы успешно устроились на работу !");
                                Console.ResetColor(); // сбрасываем в стандартный
                                imageButton.Click();
                            }
                            catch (NoSuchElementException)
                            {
                                Console.ForegroundColor = ConsoleColor.Cyan; // устанавливаем цвет
                                Console.WriteLine("Вы не были устроены на работу. Разгадайте captcha самостоятельно.");
                                Console.ResetColor(); // сбрасываем в стандартный
                            }
    
                            // Поиск кнопки рулетки
                            try
                            {
                                IWebElement rouletteButton = driver.FindElement(By.CssSelector("a[href='roulette.php'] b"));
                                rouletteButton.Click();
                            }
                            catch (NoSuchElementException)
                            {
                                // Поиск родительского элемента кнопки рулетки
                                IWebElement parentElement = driver.FindElement(By.CssSelector(".mm_item_blue a[href='roulette.php']"));
    
                                // Найти <img> внутри родительского элемента
                                IWebElement rouletteImage = parentElement.FindElement(By.CssSelector("img.mm_item_icon"));
    
                                // Выполнить действие с <img>
                                rouletteImage.Click();
                            }
    
                            // Вычисление времени ближайшего запуска по расписанию с добавлением случайной задержки
                            Random random = new Random();
                            int delaySeconds = random.Next(3600, 3900);
                            DateTime nextRunTime = DateTime.Today.AddHours(now.Hour).AddMinutes((now.Minute / 5) * 5 + 5).AddSeconds(delaySeconds);
    
                            if (isFirstIteration)
                            {
                                initialDelay = nextRunTime - DateTime.Now;
                                isFirstIteration = false;
                            }
    
                            delaySecondGR = nextRunTime - DateTime.Now;
    
                            Console.ForegroundColor = ConsoleColor.Cyan;
                            Console.WriteLine($"Ожидание {delaySecondGR.TotalMinutes} минут");
                            Console.ResetColor();
                            continue; // Продолжаем цикл
                        }
                        else
                        {
                            int[] intervals = { 3, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58 };
                            int nextMinute = intervals.FirstOrDefault(i => i > minute);
                            DateTime nextTime = new DateTime(now.Year, now.Month, now.Day, now.Hour, nextMinute, 0);
    
                            TimeSpan remainingTime = nextTime - now;
    
                            Console.ForegroundColor = ConsoleColor.Cyan;
                            Console.WriteLine($"Ожидание до ближайшего интервала (с 3 по 4 или с 8 по 9 минуту): {remainingTime.TotalSeconds} секунд");
                            Console.ResetColor();
                            Thread.Sleep(remainingTime);
                        }
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.WriteLine($"Ожидание {delaySecondGR.TotalMinutes} минут");
                        Console.ResetColor();
    
                        TimeSpan elapsedTime = DateTime.Now - previousTime;
                        delaySecondGR -= elapsedTime;
    
                        previousTime = DateTime.Now;
    
                        break; // Прекращаем цикл
                    }
                }
  • Как в коде поставить один цикл в ожидание не задевая всего кода?

    HSGOD
    @HSGOD Автор вопроса
    Слушай, я пересмотрел код и понял, что не совсем тот вопрос задал, вот тебе код, можешь подсказать, что я делаю не так после else, мне нужно чтобы значение delaySecondGR было выбрано рандомно и было = +-час, а потом с каждой проверкой цикла оно уменьшалось, а оно остаётся всё тем же.........

    TimeSpan initialDelay = TimeSpan.Zero;
                bool isFirstIteration = true;
                DateTime previousTime = DateTime.Now;
    
                while (true)
                {
                    DateTime now = DateTime.Now;
                    int minute = now.Minute;
    
                    if (delaySecondGR <= TimeSpan.Zero)
                    {
                        if ((minute >= 3 && minute <= 4) || (minute >= 8 && minute <= 9) || (minute >= 13 && minute <= 14) || (minute >= 18 && minute <= 19) || (minute >= 23 && minute <= 24) || (minute >= 28 && minute <= 29) || (minute >= 33 && minute <= 34) || (minute >= 38 && minute <= 39) || (minute >= 43 && minute <= 44) || (minute >= 48 && minute <= 49) || (minute >= 53 && minute <= 54) || (minute >= 58 && minute <= 59))
                        {
                            // Поиск кнопки карта
                            try
                            {
                                IWebElement mapButton = driver.FindElement(By.CssSelector("a[href='map.php'] b"));
                                mapButton.Click();
                            }
                            catch (NoSuchElementException)
                            {
                                // Поиск родительского элемента кнопки карта
                                IWebElement mapButton = driver.FindElement(By.CssSelector("a[href='map.php'] img.mm_item_icon"));
    
                                // Найти <img> внутри родительского элемента
                                IWebElement mapImage = mapButton.FindElement(By.CssSelector("img.mm_item_icon"));
    
                                // Выполнить действие с <img>
                                mapImage.Click();
                            }
    
                            // Поиск таблицы с данными
                            IWebElement dataTable = driver.FindElement(By.CssSelector("div.global_table_div.map_obj_table_div table.wb"));
    
                            // Поиск всех строк с данными в таблице
                            IReadOnlyCollection<IWebElement> dataRows = dataTable.FindElements(By.CssSelector("tr.map_obj_table_hover"));
    
                            // Поиск и клик на верхних стрелочках "»»»"
                            bool foundWorkplace = false;
                            foreach (IWebElement row in dataRows)
                            {
                                IWebElement arrowLink = row.FindElement(By.CssSelector("a[href*='object-info.php']"));
                                arrowLink.Click();
                                foundWorkplace = true;
                                break; // Кликнули на первой найденной стрелочке и прекращаем цикл
                            }
    
                            // Если место работы не было найдено, выводим сообщение в чат
                            if (!foundWorkplace)
                            {
                                Console.WriteLine("Место для работы не было найдено.");
                                return;
                            }
    
                            try
                            {
                                // Поиск картинки кнопки
                                IWebElement imageButton = driver.FindElement(By.CssSelector("div.getjob_hover.gtjob_center input.getjob_submitBtn"));
    
                                // Клик на картинку кнопки
                                Console.ForegroundColor = ConsoleColor.Cyan; // устанавливаем цвет
                                Console.WriteLine("Вы успешно устроились на работу !");
                                Console.ResetColor(); // сбрасываем в стандартный
                                imageButton.Click();
                            }
                            catch (NoSuchElementException)
                            {
                                Console.ForegroundColor = ConsoleColor.Cyan; // устанавливаем цвет
                                Console.WriteLine("Вы не были устроены на работу. Разгадайте captcha самостоятельно.");
                                Console.ResetColor(); // сбрасываем в стандартный
                            }
    
                            // Поиск кнопки рулетки
                            try
                            {
                                IWebElement rouletteButton = driver.FindElement(By.CssSelector("a[href='roulette.php'] b"));
                                rouletteButton.Click();
                            }
                            catch (NoSuchElementException)
                            {
                                // Поиск родительского элемента кнопки рулетки
                                IWebElement parentElement = driver.FindElement(By.CssSelector(".mm_item_blue a[href='roulette.php']"));
    
                                // Найти <img> внутри родительского элемента
                                IWebElement rouletteImage = parentElement.FindElement(By.CssSelector("img.mm_item_icon"));
    
                                // Выполнить действие с <img>
                                rouletteImage.Click();
                            }
    
                            // Вычисление времени ближайшего запуска по расписанию с добавлением случайной задержки
                            Random random = new Random();
                            int delaySeconds = random.Next(3600, 3900);
                            DateTime nextRunTime = DateTime.Today.AddHours(now.Hour).AddMinutes((now.Minute / 5) * 5 + 5).AddSeconds(delaySeconds);
    
                            if (isFirstIteration)
                            {
                                initialDelay = nextRunTime - DateTime.Now;
                                isFirstIteration = false;
                            }
    
                            delaySecondGR = nextRunTime - DateTime.Now;
    
                            Console.ForegroundColor = ConsoleColor.Cyan;
                            Console.WriteLine($"Ожидание {delaySecondGR.TotalMinutes} минут");
                            Console.ResetColor();
                            continue; // Продолжаем цикл
                        }
                        else
                        {
                            int[] intervals = { 3, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58 };
                            int nextMinute = intervals.FirstOrDefault(i => i > minute);
                            DateTime nextTime = new DateTime(now.Year, now.Month, now.Day, now.Hour, nextMinute, 0);
    
                            TimeSpan remainingTime = nextTime - now;
    
                            Console.ForegroundColor = ConsoleColor.Cyan;
                            Console.WriteLine($"Ожидание до ближайшего интервала (с 3 по 4 или с 8 по 9 минуту): {remainingTime.TotalSeconds} секунд");
                            Console.ResetColor();
                            Thread.Sleep(remainingTime);
                        }
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.WriteLine($"Ожидание {delaySecondGR.TotalMinutes} минут");
                        Console.ResetColor();
    
                        TimeSpan elapsedTime = DateTime.Now - previousTime;
                        delaySecondGR -= elapsedTime;
    
                        previousTime = DateTime.Now;
    
                        break; // Прекращаем цикл
                    }
                }
  • Как в коде поставить один цикл в ожидание не задевая всего кода?

    HSGOD
    @HSGOD Автор вопроса
    Слушай, я пересмотрел код и понял, что не совсем тот вопрос задал, вот тебе код, можешь подсказать, что я делаю не так после else, мне нужно чтобы значение delaySecondGR было выбрано рандомно и было = +-час, а потом с каждой проверкой цикла оно уменьшалось, а оно остаётся всё тем же.........

    TimeSpan initialDelay = TimeSpan.Zero;
                bool isFirstIteration = true;
                DateTime previousTime = DateTime.Now;
    
                while (true)
                {
                    DateTime now = DateTime.Now;
                    int minute = now.Minute;
    
                    if (delaySecondGR <= TimeSpan.Zero)
                    {
                        if ((minute >= 3 && minute <= 4) || (minute >= 8 && minute <= 9) || (minute >= 13 && minute <= 14) || (minute >= 18 && minute <= 19) || (minute >= 23 && minute <= 24) || (minute >= 28 && minute <= 29) || (minute >= 33 && minute <= 34) || (minute >= 38 && minute <= 39) || (minute >= 43 && minute <= 44) || (minute >= 48 && minute <= 49) || (minute >= 53 && minute <= 54) || (minute >= 58 && minute <= 59))
                        {
                            // Поиск кнопки карта
                            try
                            {
                                IWebElement mapButton = driver.FindElement(By.CssSelector("a[href='map.php'] b"));
                                mapButton.Click();
                            }
                            catch (NoSuchElementException)
                            {
                                // Поиск родительского элемента кнопки карта
                                IWebElement mapButton = driver.FindElement(By.CssSelector("a[href='map.php'] img.mm_item_icon"));
    
                                // Найти <img> внутри родительского элемента
                                IWebElement mapImage = mapButton.FindElement(By.CssSelector("img.mm_item_icon"));
    
                                // Выполнить действие с <img>
                                mapImage.Click();
                            }
    
                            // Поиск таблицы с данными
                            IWebElement dataTable = driver.FindElement(By.CssSelector("div.global_table_div.map_obj_table_div table.wb"));
    
                            // Поиск всех строк с данными в таблице
                            IReadOnlyCollection<IWebElement> dataRows = dataTable.FindElements(By.CssSelector("tr.map_obj_table_hover"));
    
                            // Поиск и клик на верхних стрелочках "»»»"
                            bool foundWorkplace = false;
                            foreach (IWebElement row in dataRows)
                            {
                                IWebElement arrowLink = row.FindElement(By.CssSelector("a[href*='object-info.php']"));
                                arrowLink.Click();
                                foundWorkplace = true;
                                break; // Кликнули на первой найденной стрелочке и прекращаем цикл
                            }
    
                            // Если место работы не было найдено, выводим сообщение в чат
                            if (!foundWorkplace)
                            {
                                Console.WriteLine("Место для работы не было найдено.");
                                return;
                            }
    
                            try
                            {
                                // Поиск картинки кнопки
                                IWebElement imageButton = driver.FindElement(By.CssSelector("div.getjob_hover.gtjob_center input.getjob_submitBtn"));
    
                                // Клик на картинку кнопки
                                Console.ForegroundColor = ConsoleColor.Cyan; // устанавливаем цвет
                                Console.WriteLine("Вы успешно устроились на работу !");
                                Console.ResetColor(); // сбрасываем в стандартный
                                imageButton.Click();
                            }
                            catch (NoSuchElementException)
                            {
                                Console.ForegroundColor = ConsoleColor.Cyan; // устанавливаем цвет
                                Console.WriteLine("Вы не были устроены на работу. Разгадайте captcha самостоятельно.");
                                Console.ResetColor(); // сбрасываем в стандартный
                            }
    
                            // Поиск кнопки рулетки
                            try
                            {
                                IWebElement rouletteButton = driver.FindElement(By.CssSelector("a[href='roulette.php'] b"));
                                rouletteButton.Click();
                            }
                            catch (NoSuchElementException)
                            {
                                // Поиск родительского элемента кнопки рулетки
                                IWebElement parentElement = driver.FindElement(By.CssSelector(".mm_item_blue a[href='roulette.php']"));
    
                                // Найти <img> внутри родительского элемента
                                IWebElement rouletteImage = parentElement.FindElement(By.CssSelector("img.mm_item_icon"));
    
                                // Выполнить действие с <img>
                                rouletteImage.Click();
                            }
    
                            // Вычисление времени ближайшего запуска по расписанию с добавлением случайной задержки
                            Random random = new Random();
                            int delaySeconds = random.Next(3600, 3900);
                            DateTime nextRunTime = DateTime.Today.AddHours(now.Hour).AddMinutes((now.Minute / 5) * 5 + 5).AddSeconds(delaySeconds);
    
                            if (isFirstIteration)
                            {
                                initialDelay = nextRunTime - DateTime.Now;
                                isFirstIteration = false;
                            }
    
                            delaySecondGR = nextRunTime - DateTime.Now;
    
                            Console.ForegroundColor = ConsoleColor.Cyan;
                            Console.WriteLine($"Ожидание {delaySecondGR.TotalMinutes} минут");
                            Console.ResetColor();
                            continue; // Продолжаем цикл
                        }
                        else
                        {
                            int[] intervals = { 3, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58 };
                            int nextMinute = intervals.FirstOrDefault(i => i > minute);
                            DateTime nextTime = new DateTime(now.Year, now.Month, now.Day, now.Hour, nextMinute, 0);
    
                            TimeSpan remainingTime = nextTime - now;
    
                            Console.ForegroundColor = ConsoleColor.Cyan;
                            Console.WriteLine($"Ожидание до ближайшего интервала (с 3 по 4 или с 8 по 9 минуту): {remainingTime.TotalSeconds} секунд");
                            Console.ResetColor();
                            Thread.Sleep(remainingTime);
                        }
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.WriteLine($"Ожидание {delaySecondGR.TotalMinutes} минут");
                        Console.ResetColor();
    
                        TimeSpan elapsedTime = DateTime.Now - previousTime;
                        delaySecondGR -= elapsedTime;
    
                        previousTime = DateTime.Now;
    
                        break; // Прекращаем цикл
                    }
                }
  • Как в коде поставить один цикл в ожидание не задевая всего кода?

    HSGOD
    @HSGOD Автор вопроса
    Слушай, я пересмотрел код и понял, что не совсем тот вопрос задал, вот тебе код, можешь подсказать, что я делаю не так после else, мне нужно чтобы значение delaySecondGR было выбрано рандомно и было = +-час, а потом с каждой проверкой цикла оно уменьшалось, а оно остаётся всё тем же.........

    TimeSpan initialDelay = TimeSpan.Zero;
                bool isFirstIteration = true;
                DateTime previousTime = DateTime.Now;
    
                while (true)
                {
                    DateTime now = DateTime.Now;
                    int minute = now.Minute;
    
                    if (delaySecondGR <= TimeSpan.Zero)
                    {
                        if ((minute >= 3 && minute <= 4) || (minute >= 8 && minute <= 9) || (minute >= 13 && minute <= 14) || (minute >= 18 && minute <= 19) || (minute >= 23 && minute <= 24) || (minute >= 28 && minute <= 29) || (minute >= 33 && minute <= 34) || (minute >= 38 && minute <= 39) || (minute >= 43 && minute <= 44) || (minute >= 48 && minute <= 49) || (minute >= 53 && minute <= 54) || (minute >= 58 && minute <= 59))
                        {
                            // Поиск кнопки карта
                            try
                            {
                                IWebElement mapButton = driver.FindElement(By.CssSelector("a[href='map.php'] b"));
                                mapButton.Click();
                            }
                            catch (NoSuchElementException)
                            {
                                // Поиск родительского элемента кнопки карта
                                IWebElement mapButton = driver.FindElement(By.CssSelector("a[href='map.php'] img.mm_item_icon"));
    
                                // Найти <img> внутри родительского элемента
                                IWebElement mapImage = mapButton.FindElement(By.CssSelector("img.mm_item_icon"));
    
                                // Выполнить действие с <img>
                                mapImage.Click();
                            }
    
                            // Поиск таблицы с данными
                            IWebElement dataTable = driver.FindElement(By.CssSelector("div.global_table_div.map_obj_table_div table.wb"));
    
                            // Поиск всех строк с данными в таблице
                            IReadOnlyCollection<IWebElement> dataRows = dataTable.FindElements(By.CssSelector("tr.map_obj_table_hover"));
    
                            // Поиск и клик на верхних стрелочках "»»»"
                            bool foundWorkplace = false;
                            foreach (IWebElement row in dataRows)
                            {
                                IWebElement arrowLink = row.FindElement(By.CssSelector("a[href*='object-info.php']"));
                                arrowLink.Click();
                                foundWorkplace = true;
                                break; // Кликнули на первой найденной стрелочке и прекращаем цикл
                            }
    
                            // Если место работы не было найдено, выводим сообщение в чат
                            if (!foundWorkplace)
                            {
                                Console.WriteLine("Место для работы не было найдено.");
                                return;
                            }
    
                            try
                            {
                                // Поиск картинки кнопки
                                IWebElement imageButton = driver.FindElement(By.CssSelector("div.getjob_hover.gtjob_center input.getjob_submitBtn"));
    
                                // Клик на картинку кнопки
                                Console.ForegroundColor = ConsoleColor.Cyan; // устанавливаем цвет
                                Console.WriteLine("Вы успешно устроились на работу !");
                                Console.ResetColor(); // сбрасываем в стандартный
                                imageButton.Click();
                            }
                            catch (NoSuchElementException)
                            {
                                Console.ForegroundColor = ConsoleColor.Cyan; // устанавливаем цвет
                                Console.WriteLine("Вы не были устроены на работу. Разгадайте captcha самостоятельно.");
                                Console.ResetColor(); // сбрасываем в стандартный
                            }
    
                            // Поиск кнопки рулетки
                            try
                            {
                                IWebElement rouletteButton = driver.FindElement(By.CssSelector("a[href='roulette.php'] b"));
                                rouletteButton.Click();
                            }
                            catch (NoSuchElementException)
                            {
                                // Поиск родительского элемента кнопки рулетки
                                IWebElement parentElement = driver.FindElement(By.CssSelector(".mm_item_blue a[href='roulette.php']"));
    
                                // Найти <img> внутри родительского элемента
                                IWebElement rouletteImage = parentElement.FindElement(By.CssSelector("img.mm_item_icon"));
    
                                // Выполнить действие с <img>
                                rouletteImage.Click();
                            }
    
                            // Вычисление времени ближайшего запуска по расписанию с добавлением случайной задержки
                            Random random = new Random();
                            int delaySeconds = random.Next(3600, 3900);
                            DateTime nextRunTime = DateTime.Today.AddHours(now.Hour).AddMinutes((now.Minute / 5) * 5 + 5).AddSeconds(delaySeconds);
    
                            if (isFirstIteration)
                            {
                                initialDelay = nextRunTime - DateTime.Now;
                                isFirstIteration = false;
                            }
    
                            delaySecondGR = nextRunTime - DateTime.Now;
    
                            Console.ForegroundColor = ConsoleColor.Cyan;
                            Console.WriteLine($"Ожидание {delaySecondGR.TotalMinutes} минут");
                            Console.ResetColor();
                            continue; // Продолжаем цикл
                        }
                        else
                        {
                            int[] intervals = { 3, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58 };
                            int nextMinute = intervals.FirstOrDefault(i => i > minute);
                            DateTime nextTime = new DateTime(now.Year, now.Month, now.Day, now.Hour, nextMinute, 0);
    
                            TimeSpan remainingTime = nextTime - now;
    
                            Console.ForegroundColor = ConsoleColor.Cyan;
                            Console.WriteLine($"Ожидание до ближайшего интервала (с 3 по 4 или с 8 по 9 минуту): {remainingTime.TotalSeconds} секунд");
                            Console.ResetColor();
                            Thread.Sleep(remainingTime);
                        }
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.WriteLine($"Ожидание {delaySecondGR.TotalMinutes} минут");
                        Console.ResetColor();
    
                        TimeSpan elapsedTime = DateTime.Now - previousTime;
                        delaySecondGR -= elapsedTime;
    
                        previousTime = DateTime.Now;
    
                        break; // Прекращаем цикл
                    }
                }
  • Как разобраться с ошибкой OpenQA.Selenium.StaleElementReferenceException?

    HSGOD
    @HSGOD Автор вопроса
    сергей кузьмин, код программы под сообщением Василия Банникова, как бы я не пытался, единственное как смог пофиксить ошибку это написать код через отправку гет запросов, но если я так сделаю, проблему будут дальше)