Дополнения к описанию — по журналу выпуска
Выпуск 8.1.0.
Вид → Масштаб → Интерфейс масштабирует весь интерфейс Studio (50–200%), запоминается. масштаб браузера и редактора отдельно.
Тема Studio задаёт prefers-color-scheme для встроенного браузера, нативного меню/трея, системных диалогов и служебных окон.
Меню «Навигация». диалог «Профиль браузера» (UA, прокси, отпечатки, JSON) как в Windows Studio.
Выпуск 8.1.1.
Закладки браузера показывают title страницы. ПКМ — меню как в Windows Studio (закрыть / все / слева / справа / кроме этой).
Панель браузера. вкладки страниц под адресной строкой вместо комбобокса.
Выпуск 8.1.2.
Инспектор DOM. ПКМ вставляет код элемента в активный таб редактора.
Подсветка HTML, XML/SVG, CSS, INI, YAML, SQL, BAT/CMD, Markdown и JSON. переход к определению открывает другой файл во вкладке.
В новом проекте браузер по умолчанию. — Chromium (Internal); run.php нового PHP-робота грузит локальный init.php.
Браузер: кнопка «Остановить»; дублирован. ие вкладок, Ctrl+1–9, DnD, overflow, Home и восстановление сессии.
Выпуск 8.1.5.
close_all_tabs на встроенном браузере не трогает ChromeDriver. при одной вкладке — no-op.
встроенная вкладка применяет профиль. — User-Agent с Client Hints, языки, экран, прокси и шум canvas/WebGL/audio/bounds; страница вкладки больше не видит window.electron; запрет локального IP через WebRTC ставится на сессию вкладки; часовой пояс один, по имени из профиля.
встроенная вкладка отдаёт из профиля число ядер, память, плотность пикселей, класс процессора и координаты, а локаль Intl ставит тем же вызовом, что и часовой пояс.
скрипты профиля встроенной вкладки ставятся по одному, шум audio не обрывает экран, железо и WebGL. видеокарта берётся из полей профиля, плотность пикселей — с окна.
встроенная вкладка прячет webdriver, дорисовывает window. .chrome, срезает хвост Electron из appVersion, отдаёт плагины, шрифты Windows, устройства mediaDevices, голос языка профиля, батарею и «разрешено» для геолокации, шумит readPixels и OffscreenCanvas; availHeight меньше экрана на панель задач, а outerWidth и…
внешний Chrome робота получает ту же поверхность, что встроенная вкладка (Client Hints, часовой пояс, языки, плагины, шрифты, батарея, размер окна). SOCKS с логином на вкладке идёт через локальный переходник, а заголовок Accept-Language берётся из списка языков профиля; модульный воркер тоже прячет webdriver.
встроенная вкладка поднимает Shadowsocks ss. // (aes-128-gcm, aes-256-gcm и chacha20-ietf-poly1305) через локальный переходник и ставит расширения Selenium из папки, zip или crx; список шифров SSL по-прежнему только у отдельного Chrome.
мини-тур «Показать интерфейс» из диалога «Начните здесь» (дерево, редактор, браузер, чат, справка) и e2e-скрипт проверки онбординга.
панель «Элементы DOM» → вкладка «Инспектор». свойства элемента сгруппированы в сворачиваемые блоки по категориям вместо повторяющейся колонки категории, у каждого значения появилась кнопка копирования в буфер (у логических значений её нет — в ячейке чекбокс), а в тулбаре — копирование XPath элемента,…
инспектор окон и инспектор UI. кнопка выбора окна и элемента снова выбирает — клик левой или средней кнопкой мыши, а повторное нажатие на кнопку отменяет ожидание и возвращает её в исходное состояние; отменённый выбор не сбрасывает уже выбранное окно или элемент.
Помощник кода. поиск по дереву ищет по обоим именам узла — в русской ставке «browser» находит «Браузер», в английской «мышь» находит «Mouse»; запрос прощает регистр, разделители, слитное написание («proxylist» ловит «Proxy List») и одну опечатку («brower» ловит «Browser»)…
если ChromeDriver потерял сессию (invalid session id), она поднимается заново. — переход по адресу снова работает, лог не засыпается одной и той же ошибкой.
новый адрес в браузере больше не ждёт таймаут предыдущего сайта. — зависший ya.ru не блокирует google.com.
Стоп и новый адрес сразу рвут текущую загрузку. — кнопки не ждут ответа сервера, старый сайт не продолжает грузиться.
во время загрузки страницы снова можно открыть вкладку и контекстное меню. — плюс и меню не ждут ChromeDriver.
диалог настроек снова сохраняет. — переключатель подсветки пробелов в редакторе уходил на сервер текстом вместо флага, из-за чего сервер отвергал весь набор правок и не сохранялась ни одна вкладка; пароль из одних букв и цифр больше не блокирует сохранение, а если сервер всё же отверг прав…
панель «Элементы DOM» → вкладка «Инспектор». кнопка подсветки элемента — страница прокручивается к выбранному элементу и обводит его красной рамкой; через полторы секунды рамка снимается сама и прежнее оформление элемента возвращается.
панели «Элементы DOM» и «Окна» (дерево, список, инспектор). строка поиска больше не растягивается на всю панель — поле высотой в одну строку под тулбаром, а свойства и дерево остаются под ним и не уезжают за край панели.
панель «Элементы DOM» (Инспектор). поиск подсвечивает совпадения прямо в именах и значениях свойств и показывает счётчик «Найдено: N».
панель «Элементы DOM» (Инспектор). у поиска появился фильтр по категориям свойств, а звездо́чкой свойство закрепляется в блоке «Избранные» поверх списка — закрепления сохраняются между запусками.
панель «Элементы DOM» (Инспектор). горячие клавиши — Ctrl+F открывает поиск по свойствам, F5 обновляет снимок, Ctrl+Shift+C подсвечивает элемент на странице, Esc закрывает поиск и просмотр HTML.
панель «Элементы DOM» (Инспектор). снимок свойств экспортируется в файл Markdown или JSON вместе с XPath и меткой времени.
панель «Элементы DOM» (Инспектор). кнопка «HTML элемента» открывает outer HTML с отступами по вложенности — разметку можно прочитать и скопировать.
панель «Элементы DOM» (Инспектор). появилась категория «Вычисленные стили» — все computed-свойства элемента (цвет, шрифты, отступы и т.д.) отдельным сворачиваемым блоком; они участвуют в поиске, фильтре категорий, закреплении и экспорте.
панель «Элементы DOM» (Инспектор). сверху показана диаграмма блочной модели элемента — вложенные кольца отступа, границы и полей с числами по сторонам и размером содержимого, как во вкладке Computed браузерного DevTools.
панель «Элементы DOM» (Инспектор). над списком свойств появилась цепочка предков элемента (html › body › … › сам элемент) — клик по любому уровню переносит инспектор на него.
панель «Элементы DOM» (Инспектор). кнопка «История» хранит последние осмотренные элементы и возвращает инспектор к любому из них одним кликом.
плагины JSON, XML, словарь, преобразователь дат и процессы собраны под net8. — объект снова связан с id, недоступный браузер не роняет бэкенд.
модели браузера в списке как в Studio 7. — Chrome/Firefox/MS Edge/… Selenium WebDriver (и Headless), а не короткие Chrome/Firefox.
set_model("Chromium") как в классической Studio 7 переключает на Chromium (Internal) без минутного таймаута Selenium. get_model() для встроенного браузера возвращает Chromium (Internal).
Координатные команды мыши в браузере Electron переставляют настоящий системный указатель. mouse_move_to, mouse_click, mouse_double_click и mouse_down/mouse_up отвечали false или били не туда, потому что точка страницы пересчитывалась по формуле рамки окна приложения, а в этом продукте рамка несимметрична - указатель не доезжал до страницы браузера.
Печать всей страницы браузера из робота работает в браузере Electron. print_body отвечал false и не создавал файла, потому что снимок всей страницы за этим вызовом не был реализован для движков этого семейства, а поиску по картинке страницы (get_pos_in_webpage_picture) было негде искать.
Чтение страницы браузера из робота больше не возвращает пустоту в браузере Electron. get_selected_text, get_cpu_class, get_referer, get_ready_state, save_page_as, get_parents_count и счётчик фреймов у is_all_completed строили JavaScript так, что значение вычислялось, но не возвращалось, а Selenium-движок выполняет скрипт как тело функции -…
Робот с несколькими открытыми вкладками браузера больше не читает окно программы вместо страницы. после navigate адрес и исходник страницы могли относиться к оболочке, хотя вкладка уже загрузилась, - get_url отвечал стартовой страницей самой программы, и все последующие чтения текста давали пустоту.
В «Настройки». — «Браузер» вернулось поле прокси: оно показывает прокси текущей вкладки в виде «адрес[;логин;пароль]», «Применить» пишет его в профиль вкладки и пересоздаёт браузер, пустая строка снимает прокси.
Настройки программы и настройки профиля вкладки разложены по блокам с подписями, и у каждой опции появился «?». — коротко объясняет, за что она отвечает и к чему приводит её изменение, а кнопка в шапке держит справа панель «Справка по разделу» со всеми пояснениями открытого блока.
В диалоге профиля вкладки появился антидетект-пресет. User-Agent, язык, часовой пояс, гео, железо, экран и WebGL заполняются из одного регионального набора (Россия, Германия, Великобритания, Польша, Нидерланды, США — или случайный связный), и рядом работает проверка консистентности: противоречащие друг другу п…
Браузер робота, который перестал отвечать, больше не блокирует остальные браузеры того же процесса Студии или Runtime. у каждого браузера теперь своя блокировка команд вместо одной на весь процесс, а вызов, заставший свой браузер занятым, отказывает через 30 секунд - отдаёт пустой результат и оставляет предупреждение в логе вместо вечного ожидания.
Браузер, который перестал отвечать, больше не зависает навсегда. Студия и Runtime сами замечают команду, которую Chromium не вернул (браузер держит её дольше 35 секунд), пересобирают сессию этого браузера и снова начинают его читать - запуск робота в такой браузер отвечает за секунды вместо минуты молчания, а читающие ме…
Вкладка «PHP» в Настройках теперь говорит правду о том, как именно запускается робот. .