InstanceExtensions (Browser)

static class · пространство имён z3n7 · исходник Browser/Canvas.cs, Browser/Cookies.cs, Browser/InstanceExtencions.cs

public static class InstanceExtensions

Другие части этого типа: InstanceExtensions (Traffic)

Методы расширения для Instance: поиск картинки на скриншотах страницы, клики, тапы и свайпы по координатам, помощь с областью просмотра.

Методы

CenterArea

public static int[] CenterArea(this Instance instance, int width = 0, int height = 0)

Метод расширения для Instance. исходник

Область [x, y, width, height] заданного размера по центру области просмотра.

Параметр Описание
width Ширина; 0 вместе с height = 0 возвращает всю область просмотра.
height Высота; 0 — равна width.

ClearShit

public static void ClearShit(this Instance instance, string domain)

Метод расширения для Instance. исходник

Закрывает все вкладки, очищает кеш и куки domain и открывает about:blank.

ClickCenter

public static int[] ClickCenter(this Instance instance)

Метод расширения для Instance. исходник

Кликает в центр области просмотра; возвращает точку.

ClickImg

public static int[] ClickImg(this Instance instance, string imgFile, int[] searchArea, float threshold = 0.99f, bool nativeSearch = true, int delay = 0)

Метод расширения для Instance. исходник

Находит картинку и кликает в её центр.

Параметр Описание
imgFile Картинка-шаблон: путь к файлу (.png, .jpg, .jpeg, .gif, .bmp, .webp) или Base64.
searchArea Область поиска [x, y, width, height] в пикселях страницы.
threshold Требуемое сходство, 0–1.
nativeSearch Использовать FindImg (по умолчанию), а не FindImgFast.
delay Сколько секунд ждать перед кликом.

Возвращает: Точка клика.

CloseExtraTabs

public static void CloseExtraTabs(this Instance instance, bool blank = false, int tabToKeep = 1)

Метод расширения для Instance. исходник

Закрывает все вкладки после первых tabToKeep.

Параметр Описание
blank Затем открыть about:blank в активной вкладке.
tabToKeep Сколько вкладок оставить.

CloseNewTab

public static void CloseNewTab(this Instance instance, int deadline = 10, int tabIndex = 2, bool thrw = true)

Метод расширения для Instance. исходник

Ждёт, пока число вкладок станет равно tabIndex, и закрывает все, кроме первой.

Параметр Описание
deadline Сколько секунд ждать.
tabIndex Сколько вкладок ждать.
thrw Бросать исключение, если это не произошло вовремя.

ConvertToSupportedFormat

public static Bitmap ConvertToSupportedFormat(Bitmap source)

исходник

Возвращает картинку в 24bpp RGB (на белом фоне) — формат, который нужен для сравнения с шаблоном в AForge; картинка в 24bpp возвращается как есть.

CtrlV

public static void CtrlV(this Instance instance, string ToPaste)

Метод расширения для Instance. исходник

Вставляет текст через буфер обмена Windows (Ctrl+V); прежний текст буфера восстанавливается. Ошибки игнорируются.

Down

public static void Down(this Instance instance, int pauseAfterMs = 5000)

Метод расширения для Instance. исходник

Закрывает браузер (запуск «без браузера») и ждёт.

Параметр Описание
pauseAfterMs Пауза после, мс.

F5

public static void F5(this Instance instance, bool WaitTillLoad = true)

Метод расширения для Instance. исходник

Перезагружает страницу.

Параметр Описание
WaitTillLoad Ждать окончания загрузки.

FindAllInScreenshot

public static Dictionary<string, List<int[]>> FindAllInScreenshot(this Instance instance, Dictionary<string, string> templates, int[] searchArea, float threshold = 0.9f, int minDistance = 30)

Метод расширения для Instance. исходник

Снимает одно превью страницы (GetPagePreview) и ищет в области все вхождения каждого шаблона. Совпадения, которые ближе minDistance к более точному, отбрасываются.

Параметр Описание
templates Имя → картинка в Base64.
searchArea Область поиска [x, y, width, height] в пикселях страницы.
threshold Требуемое сходство, 0–1.
minDistance Наименьшее расстояние между найденными центрами, px.

Возвращает: Имя → центры [x, y]; шаблоны без совпадений или с нечитаемыми картинками не попадают.

FindImg

public static int[] FindImg(this Instance instance, string imgFile, int[] searchArea, double threshold = 0.99)

Метод расширения для Instance. исходник

Находит картинку в области собственным поиском картинок ZennoPoster.

Параметр Описание
imgFile Картинка-шаблон: путь к файлу (.png, .jpg, .jpeg, .gif, .bmp, .webp) или Base64.
searchArea Область поиска [x, y, width, height] в пикселях страницы.
threshold Требуемое сходство, 0–1.

Возвращает: Центр [x, y] совпадения или null, если не найдено.

FindImgFast

public static int[] FindImgFast(this Instance instance, string imgFile, int[] searchArea, float threshold = 0.99f, bool thrw = true)

Метод расширения для Instance. исходник

Снимает одно превью страницы (GetPagePreview) и ищет картинку в области сравнением с шаблоном AForge.

Параметр Описание
imgFile Картинка-шаблон: путь к файлу (.png, .jpg, .jpeg, .gif, .bmp, .webp) или Base64.
searchArea Область поиска [x, y, width, height] в пикселях страницы.
threshold Требуемое сходство, 0–1.
thrw Бросать исключение, если не найдено; иначе вернуть null.

Возвращает: Центр [x, y] первого совпадения.

FindMultipleInCachedScreenshot

public static Dictionary<string, int[]> FindMultipleInCachedScreenshot(string base64Screenshot, Dictionary<string, string> templates, int[] searchArea, float threshold = 0.95f)

исходник

То же, что FindMultipleInScreenshot, но на скриншоте, снятом ранее.

Параметр Описание
base64Screenshot Скриншот в Base64.
templates Имя → картинка в Base64.
searchArea Область поиска [x, y, width, height] в пикселях страницы.
threshold Требуемое сходство, 0–1.

FindMultipleInMultipleAreas

public static Dictionary<string, int[]> FindMultipleInMultipleAreas(this Instance instance, Dictionary<string, (string template, int[] area)> templatesWithAreas, float threshold = 0.95f)

Метод расширения для Instance. исходник

Снимает одно превью страницы (GetPagePreview) и ищет каждый шаблон в его собственной области.

Параметр Описание
templatesWithAreas Имя → (картинка в Base64, область [x, y, width, height]).
threshold Требуемое сходство, 0–1.

Возвращает: Имя → центр [x, y]; шаблоны без совпадений не попадают.

FindMultipleInScreenshot

public static Dictionary<string, int[]> FindMultipleInScreenshot(this Instance instance, Dictionary<string, string> templates, int[] searchArea, float threshold = 0.95f)

Метод расширения для Instance. исходник

Снимает одно превью страницы (GetPagePreview) и ищет в области первое совпадение каждого шаблона.

Параметр Описание
templates Имя → картинка в Base64.
searchArea Область поиска [x, y, width, height] в пикселях страницы.
threshold Требуемое сходство, 0–1.

Возвращает: Имя → центр [x, y]; шаблоны без совпадений не попадают.

FixTimezone

public static void FixTimezone(this Instance instance, IZennoPosterProjectModel project)

Метод расширения для Instance. исходник

Открывает browserscan.net, берёт часовой пояс IP из его запроса visitor-IP в трафике и ставит его инстансу как часовой пояс IANA.

Примечания: Бросает исключение, если ответ не пришёл примерно за 60 секунд или в нём нет часового пояса.

GetCenter

public static int[] GetCenter(this Instance instance)

Метод расширения для Instance. исходник

Центр [x, y] области просмотра страницы (window.innerWidth/innerHeight).

GetCookies

public static string GetCookies(this Instance instance, IZennoPosterProjectModel project)

Метод расширения для Instance. исходник

Собирает свежие куки с 5–15 случайных популярных сайтов через CookieCollector (user agent и языки профиля, запросы идут напрямую, без прокси инстанса) и загружает их в инстанс.

Возвращает: Куки в формате Netscape.

GetHe

public static HtmlElement GetHe(this Instance instance, object obj, string method = "")

Метод расширения для Instance. исходник

Находит элемент в активной вкладке.

Параметр Описание
obj Элемент: HtmlElement; (value, "id") или (value, "name"); или (tag, attribute, pattern, mode, index), как в FindElementByAttribute.
method Для селектора из 5 частей: random выбирает случайное совпадение, last — последнее; иначе используется индекс.

Возвращает: Элемент. Бросает исключение, если он не найден или вид селектора не поддерживается.

Go

public static void Go(this Instance instance, string url, bool strict = false, bool waitTdle = false, bool newTab = false)

Метод расширения для Instance. исходник

Переходит активной вкладкой на URL, если она ещё не на нём.

Параметр Описание
url Целевой URL.
strict Сравнивать URL целиком; иначе пропускать, если текущий URL его содержит.
waitTdle Ждать окончания загрузки.
newTab Сначала открыть новую вкладку.

HeCatch

public static string HeCatch(this Instance instance, object obj, string method = "", int deadline = 10, string atr = "innertext", int delay = 1, string pathToScript = null)

Метод расширения для Instance. исходник

Следит deadline секунд за элементом, который не должен появиться (например, сообщением об ошибке).

Параметр Описание
obj Элемент: HtmlElement; (value, "id") или (value, "name"); или (tag, attribute, pattern, mode, index), как в FindElementByAttribute.
method Для селектора из 5 частей: random выбирает случайное совпадение, last — последнее; иначе используется индекс.
deadline Сколько секунд продолжать поиск (каждые 0,5 с).
atr Атрибут, который используется как сообщение исключения.
delay Сколько секунд ждать перед началом.
pathToScript Не используется.

Возвращает: null, если элемент так и не появился. Если появился, бросает исключение, сообщение которого — его atr.

public static string HeCatch(this Instance instance, IZennoPosterProjectModel project, object obj, string method = "", int deadline = 10, string atr = "innertext", int delay = 1, string pathToScript = null)

Метод расширения для Instance. исходник

То же, что перегрузка без project; перед исключением ещё сохраняет сообщение в переменную err.

Параметр Описание
project Проект для переменной err.
obj Элемент: HtmlElement; (value, "id") или (value, "name"); или (tag, attribute, pattern, mode, index), как в FindElementByAttribute.
method Для селектора из 5 частей: random выбирает случайное совпадение, last — последнее; иначе используется индекс.
deadline Сколько секунд продолжать поиск (каждые 0,5 с).
atr Атрибут, который используется как сообщение исключения.
delay Сколько секунд ждать перед началом.
pathToScript Не используется.

HeClick

public static void HeClick(this Instance instance, object obj, string method = "", int deadline = 10, double delay = 1, string comment = "", bool thrw = true, bool thr0w = true, int emu = 0, string pathToScript = null)

Метод расширения для Instance. исходник

Ждёт элемент и кликает по нему после случайной паузы примерно 1–1,3 с × delay.

Параметр Описание
obj Элемент: HtmlElement; (value, "id") или (value, "name"); или (tag, attribute, pattern, mode, index), как в FindElementByAttribute.
method Для селектора из 5 частей: random выбирает случайное совпадение, last — последнее; иначе используется индекс. clickOut кликает, пока элемент не исчезнет.
deadline Сколько секунд продолжать поиск (каждые 0,5 с).
delay Множитель паузы перед кликом.
comment Текст, который добавляется к сообщению о таймауте.
thrw Бросать исключение, если элемент не найден вовремя; иначе тихо вернуться.
thr0w Старый переключатель: false выключает и thrw.
emu 1 — включить полную эмуляцию мыши для этого действия, −1 — выключить, 0 — оставить настройку инстанса.
pathToScript Если задано, действие и XPath элемента дописываются в этот файл.

HeDragAndDrop

public static Point HeDragAndDrop(this Instance instance, HtmlElement element, int offsetX, int offsetY = 0)

Метод расширения для Instance. исходник

Перетаскивает из центра элемента на заданное смещение по человекоподобной траектории: плавный разгон и торможение, лёгкое покачивание по вертикали и, на длинных перемещениях, небольшой перелёт с поправкой.

Параметр Описание
element Элемент, который нужно перетащить.
offsetX Смещение по горизонтали, px.
offsetY Смещение по вертикали, px.

Возвращает: Точка, куда отпущено.

HeDrop

public static void HeDrop(this Instance instance, object obj, string method = "", int deadline = 10, bool thrw = true)

Метод расширения для Instance. исходник

Ждёт элемент и удаляет его со страницы.

Параметр Описание
obj Элемент: HtmlElement; (value, "id") или (value, "name"); или (tag, attribute, pattern, mode, index), как в FindElementByAttribute.
method Для селектора из 5 частей: random выбирает случайное совпадение, last — последнее; иначе используется индекс.
deadline Сколько секунд продолжать поиск (каждые 0,5 с).
thrw Бросать исключение, если элемент не найден вовремя; иначе тихо вернуться.

HeGet

public static string HeGet(this Instance instance, object obj, string method = "", int deadline = 10, string atr = "innertext", int delay = 1, bool thrw = true, bool thr0w = true, bool waitTillVoid = false, string pathToScript = null)

Метод расширения для Instance. исходник

Ждёт элемент и возвращает один из его атрибутов.

Параметр Описание
obj Элемент: HtmlElement; (value, "id") или (value, "name"); или (tag, attribute, pattern, mode, index), как в FindElementByAttribute.
method Для селектора из 5 частей: random выбирает случайное совпадение, last — последнее; иначе используется индекс.
deadline Сколько секунд продолжать поиск (каждые 0,5 с).
atr Атрибут, который нужно прочитать.
delay Сколько секунд ждать после того, как найдено.
thrw Бросать исключение, если элемент не найден вовремя; иначе тихо вернуться.
thr0w Старый переключатель: false выключает и thrw.
waitTillVoid Вместо этого ждать, пока элемент исчезнет; по дедлайну возвращает null, а пока элемент есть — бросает исключение.
pathToScript Если задано, действие и XPath элемента дописываются в этот файл.

Возвращает: Значение атрибута или null, если не найдено и thrw равно false.

HeLongClick

public static void HeLongClick(this Instance instance, object obj, int holdMs = 3, string method = "", int deadline = 10, double delay = 1, string comment = "", bool thrw = true, bool thr0w = true, int emu = 0)

Метод расширения для Instance. исходник

Ждёт элемент и удерживает левую кнопку в случайной точке внутри него.

Параметр Описание
obj Элемент: HtmlElement; (value, "id") или (value, "name"); или (tag, attribute, pattern, mode, index), как в FindElementByAttribute.
holdMs Время удержания в миллисекундах.
method Для селектора из 5 частей: random выбирает случайное совпадение, last — последнее; иначе используется индекс.
deadline Сколько секунд продолжать поиск (каждые 0,5 с).
delay Множитель паузы перед нажатием.
comment Текст, который добавляется к сообщению о таймауте.
thrw Бросать исключение, если элемент не найден вовремя; иначе тихо вернуться.
thr0w Старый переключатель: false выключает и thrw.
emu 1 — включить полную эмуляцию мыши для этого действия, −1 — выключить, 0 — оставить настройку инстанса.
public static void HeLongClick(this Instance instance, int x, int y, int holdMs = 3, double delay = 1, int emu = 0)

Метод расширения для Instance. исходник

Удерживает левую кнопку в точке.

Параметр Описание
x X во вкладке.
y Y во вкладке.
holdMs Время удержания в миллисекундах.
delay Множитель паузы перед нажатием.
emu 1 — включить полную эмуляцию мыши для этого действия, −1 — выключить, 0 — оставить настройку инстанса.

HeMultiClick

public static void HeMultiClick(this Instance instance, List<object> selectors)

Метод расширения для Instance. исходник

Кликает по каждому элементу по очереди с настройками HeClick по умолчанию.

HePeakRandom

public static void HePeakRandom(this Instance instance, object obj, int min = 1, int max = 10)

Метод расширения для Instance. исходник

Открывает выпадающий список двумя долгими кликами и нажимает «вниз» случайное число раз.

Параметр Описание
obj Элемент: HtmlElement; (value, "id") или (value, "name"); или (tag, attribute, pattern, mode, index), как в FindElementByAttribute.
min Меньше всего нажатий.
max Верхняя граница числа нажатий (не включая).

HeSet

public static void HeSet(this Instance instance, object obj, string value, string method = "id", int deadline = 10, double delay = 1, string comment = "", bool thrw = true, bool thr0w = true, int emu = 0, string pathToScript = null)

Метод расширения для Instance. исходник

Ждёт поле ввода и вводит value после случайной паузы примерно 1,3–2 с × delay.

Параметр Описание
obj Элемент: HtmlElement; (value, "id") или (value, "name"); или (tag, attribute, pattern, mode, index), как в FindElementByAttribute.
value Текст для ввода.
method Для селектора из 5 частей: random выбирает случайное совпадение, last — последнее; иначе используется индекс.
deadline Сколько секунд продолжать поиск (каждые 0,5 с).
delay Множитель паузы.
comment Текст, который добавляется к сообщению о таймауте.
thrw Бросать исключение, если элемент не найден вовремя; иначе тихо вернуться.
thr0w Старый переключатель: false выключает и thrw.
emu 0 — задать значение полной эмуляцией ZennoPoster; больше 0 — кликнуть по полю и напечатать текст; меньше 0 — ничего не вводится.
pathToScript Если задано, действие и XPath элемента дописываются в этот файл.

MousePOsCenter

public static int[] MousePOsCenter(this Instance instance, bool moveMouse = false)

Метод расширения для Instance. исходник

Включает полную эмуляцию мыши и ставит курсор в центр области просмотра.

Параметр Описание
moveMouse Переместить курсор туда, а не задать его позицию.

Возвращает: Центр.

SaveCookies

public static string SaveCookies(this Instance instance)

Метод расширения для Instance. исходник

Возвращает куки инстанса в том виде, в каком их сохраняет SaveCookie (через временный файл).

ScrollDown

public static void ScrollDown(this Instance instance, int y = 420)

Метод расширения для Instance. исходник

Прокручивает эмулированным колесом мыши.

Параметр Описание
y Шаг колеса.

SetTimeFromDb

public static void SetTimeFromDb(this Instance instance, IZennoPosterProjectModel project)

Метод расширения для Instance. исходник

Задаёт эмуляцию часового пояса из JSON timezone (timezoneOffset, timezoneName) строки аккаунта в _instance; если его нет, пишет предупреждение.

SwipeFromCenter

public static int[] SwipeFromCenter(this Instance instance, int distance, string direction = null, int[] bounds = null)

Метод расширения для Instance. исходник

Делает свайп от центра области просмотра.

Параметр Описание
distance Длина свайпа, px.
direction left, right, up или down; если пусто — случайно.
bounds Держать конечную точку внутри [x, y, width, height].

Возвращает: Конечная точка.

SwipeImgToCenter

public static int[] SwipeImgToCenter(this Instance instance, string imgFile, int[] searchArea, float threshold = 0.95f, bool nativeSearch = false)

Метод расширения для Instance. исходник

Находит картинку и делает свайп от неё к центру области просмотра.

Параметр Описание
imgFile Картинка-шаблон: путь к файлу (.png, .jpg, .jpeg, .gif, .bmp, .webp) или Base64.
searchArea Область поиска [x, y, width, height] в пикселях страницы.
threshold Требуемое сходство, 0–1.
nativeSearch Использовать FindImg, а не FindImgFast.

Возвращает: Центр области просмотра.

TapCenter

public static int[] TapCenter(this Instance instance)

Метод расширения для Instance. исходник

Тапает в центр области просмотра; возвращает точку.

TapImg

public static int[] TapImg(this Instance instance, string imgFile, int[] searchArea, float threshold = 0.99f, bool nativeSearch = false, int delay = 0)

Метод расширения для Instance. исходник

Находит картинку и тапает в её центр (событие касания).

Параметр Описание
imgFile Картинка-шаблон: путь к файлу (.png, .jpg, .jpeg, .gif, .bmp, .webp) или Base64.
searchArea Область поиска [x, y, width, height] в пикселях страницы.
threshold Требуемое сходство, 0–1.
nativeSearch Использовать FindImg, а не FindImgFast.
delay Сколько секунд ждать перед тапом.

Возвращает: Точка тапа.

UpEmpty

public static void UpEmpty(this Instance instance)

Метод расширения для Instance. исходник

Запускает Chromium без папки профиля.

UpFromFolder

public static void UpFromFolder(this Instance instance, string pathProfile, bool useProfile = false, BrowserType browserType = BrowserType.Chromium)

Метод расширения для Instance. исходник

Запускает браузер с папкой профиля.

Параметр Описание
pathProfile Папка профиля.
useProfile Применить и профиль ZennoPoster.
browserType Какой браузер запускать.