<canvas width="1170" height="898" style="touch-action: none; width: 1170px; height: 898px; position: absolute; left: 0px; top: 0px; cursor: inherit;"></canvas>
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"
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;
}
}
}
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; // Прекращаем цикл
}
}
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; // Прекращаем цикл
}
}
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; // Прекращаем цикл
}
}
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; // Прекращаем цикл
}
}