- Регистрация
- 11.10.2019
- Сообщения
- 71
- Благодарностей
- 20
- Баллы
- 8
используйте JS для кликов, в коде проходите узлы shadow-root.не получается,только через клик по картинке получилось,а во многопотоке это катастрофа(
function deepQuerySelector(selector, root = document) {
// Прямой поиск на этом уровне
const el = root.querySelector(selector);
if (el) return el;
// Поиск внутри Shadow DOM
const elements = root.querySelectorAll('*');
for (const elem of elements) {
if (elem.shadowRoot) {
const found = deepQuerySelector(selector, elem.shadowRoot);
if (found) return found;
}
}
return null;
}
/*
* Кликает по элементу, если найден
*/
function deepClick(selector) {
const el = deepQuerySelector(selector);
if (el) {
el.click();
console.log(`✅ Клик выполнен по: ${selector}`);
} else {
console.error(`❌ Элемент не найден: ${selector}`);
}
}
// ✅ Пример использования:
deepClick('cr-button#clearButton'); // Клик по кнопке "Перейти к проверке безопасности"
function deepQuerySelectorAll(selector, root = document, results = []) {
root.querySelectorAll(selector).forEach(el => results.push(el));
root.querySelectorAll('*').forEach(el => {
if (el.shadowRoot) {
deepQuerySelectorAll(selector, el.shadowRoot, results);
}
});
return results;
}
function deepClickNth(selector, index = 0) {
const elements = deepQuerySelectorAll(selector);
if (elements.length > index) {
elements[index].click();
console.log(`✅ Клик по ${index+1}-му элементу ${selector}`);
} else {
console.error(`❌ Нет ${index+1}-го элемента для ${selector}, найдено ${elements.length}`);
}
}
function uncheckIfChecked(selector, index = 0) {
const elements = deepQuerySelectorAll(selector);
if (elements.length > index) {
const el = elements[index];
const isChecked = el.hasAttribute('checked') || el.checked;
if (isChecked) {
console.log(`☑ Чекбокс ${index+1} включён → снимаем`);
el.click();
} else {
console.log(`⬜ Чекбокс ${index+1} уже снят → ничего не делаем`);
}
} else {
console.error(`❌ Нет ${index+1}-го элемента для ${selector}, найдено ${elements.length}`);
}
}
// Снять только если включён второй чекбокс
uncheckIfChecked('cr-checkbox#checkbox', 1);
// Подождать 500 мс и только потом кликнуть "Очистить"
setTimeout(() => {
deepClickNth('cr-button#clearButton');
}, 500);
Возможно, от версии к версии что то меняют разработчики Хромиума.Почему то так получается, что вёрстка chrome://settings/clearBrowserData регулярно меняется.
Пока не появилось, к сожалению.Может кто знает, как средствами зенки почистить кеш? Не появилось ли в последних версиях браузера что то подобное из коробки?
Сделайте это пожалуйста. Профили разрастаются просто ужасно быстро, очистка кеша, хоть как то спасает ситуацию.Возможно, от версии к версии что то меняют разработчики Хромиума.
Пока не появилось, к сожалению.
Здравствуйте,Сделайте это пожалуйста. Профили разрастаются просто ужасно быстро, очистка кеша, хоть как то спасает ситуацию.
К сожалению да, не все C# методы ZennoPoster доступны для работы с ZennoBrowser, но мы над этим работаем.@Dmitriy_Zenno , я чего-то не понял, а что при работе ZennoBrowser через ZennoPoster стандартные методы C# для работы с браузером не работают??? Ну типа очистка куки, кэша, поиска элементов, кликов, подмены запросов и тп???
P.S Сам с ZB все еще ни разу не работал ... думал вот как-нибудь поставить ZB и попробовать в шаблоне выбрать его вместо используемого мной хромиума, но судя по данной теме вижу что похоже даже базовый функционал не реализон при работе через ZP ??? Или я что-то не так понял? У меня все шаблоны полностью на C# кубиках, работа с браузером соответственно то же на C# идет ... как я понял не получится просто выбрать новый тип браузера в готовых шаблонах и работать?
Спасибо за ответ. Жаль конечно. Если без чистки кук и кэша я бы еще смог обойтись, то вот без монитора трафика, подмены тела запросов/ответов, программной установки прокси точно никак не обойтись. А планируется в будущем распространить эти методы и на работу с ZB ?К сожалению да, не все C# методы ZennoPoster доступны для работы с ZennoBrowser, но мы над этим работаем.
Такие действия, как поиск элементов, кликов - работают.
Очистка куки, кэша и подмены запросов - не работают.
Смена прокси на "лету", тоже не работает, а очень нужна эта возможность в текущих реалиях.К сожалению да, не все C# методы ZennoPoster доступны для работы с ZennoBrowser, но мы над этим работаем.
Такие действия, как поиск элементов, кликов - работают.
Очистка куки, кэша и подмены запросов - не работают.
Сейчас есть задача сделать доступ к cookie container ZennoBrowser при интеграции с ZennoPoster. На счет подмены запросов не видел, передам информацию на данную фичу.Спасибо за ответ. Жаль конечно. Если без чистки кук и кэша я бы еще смог обойтись, то вот без vмонитора трафика и подмены тела запросов/ответов никак. А планируется в будущем распространить эти методы и на работу с ZB ?
Для работы через ZennoBrowser пока не планируем внедрять такой функционал.Смена прокси на "лету", тоже не работает, а очень нужна эта возможность в текущих реалиях.
Вопрос был хоть и не ко мне, но отвечу ... вот работает шаблон и вдруг в какой-то момент прокси умирает, при наличии такого функционала ее можно просто заменить на другую, при отсутствии этого функционала шаблон не доработает до конца (что в некоторых ситуациях может быть весьма критичным). Например уже заюзали почту, приняли 3 СМС и осталось только кнопку нажать .... а прокси не воркает ... и по сути все идет на смарку. А можно было бы просто сменить прокси и все же нажать на кнопку.Для работы через ZennoBrowser пока не планируем внедрять такой функционал.
Подскажите пожалуйста, а где вы хотите использовать подмену прокси на лету?
Я вас понял, подсвечу этот момент команде.Вопрос был хоть и не ко мне, но отвечу ... вот работает шаблон и вдруг в какой-то момент прокси умирает, при наличии такого функционала ее можно просто заменить на другую, при отсутствии этого функционала шаблон не доработает до конца (что в некоторых ситуациях может быть весьма критичным). Например уже заюзали почту, приняли 3 СМС и осталось только кнопку нажать .... а прокси не воркает ... и по сути все идет на смарку. А можно было бы просто сменить прокси и все же нажать на кнопку.
Да везде, где требуется и есть возможность сделать часть работы на одних прокси, безлимитных - дешёвых, а операции требовательные к прокси переключить на дорогие. Например прохождение капчи, капчу прошёл, переключился на другую прокси и работай дальше.Для работы через ZennoBrowser пока не планируем внедрять такой функционал.
Подскажите пожалуйста, а где вы хотите использовать подмену прокси на лету?
Плюсую!Вопрос был хоть и не ко мне, но отвечу ... вот работает шаблон и вдруг в какой-то момент прокси умирает, при наличии такого функционала ее можно просто заменить на другую, при отсутствии этого функционала шаблон не доработает до конца (что в некоторых ситуациях может быть весьма критичным). Например уже заюзали почту, приняли 3 СМС и осталось только кнопку нажать .... а прокси не воркает ... и по сути все идет на смарку. А можно было бы просто сменить прокси и все же нажать на кнопку.
Насчёт анонимности, есть такие сайты, которые проверяют тебя не постоянно, зашёл, условный клауд тебя проверил, рекапча тебе присвоила рейтинг, прошёл условную фанкапчу (легкий челендж за счёт истого ip), поменял прокси и парси например дальше. Или проверяют тебя только при определённых действиях, регистрации и так далее.Я вас понял, подсвечу этот момент команде.
Сейчас пока ситуация такая:
- Мы это не делаем, потому что это плохо сказывается на анонимность.
- Но запрос от клиентов все равно есть.
Для некоторых задач это может быть важно. Например прокси упал, но работа еще не закончена, это приводит к полной потери работы, а смена прокси могла работу доделать, пускай даже с потерей анонимности.


