Как отключить восстановление страниц? Хром не выключился правильно. Незамедлительный?

18

Я автоматизирую RPI для четырех дисплеев в моей компании. Я их перезагружаю каждый день, чтобы браузер обновлялся. Я не могу получить страницы восстановления? Хром не закрылся правильно, пузырь не всплыл. Я пробовал несколько решений, которые я нашел в Интернете, но ничего не работает.

Я добавил много переключателей, таких как --noerrdialogs --disable-session-crashed-bubble --disable-infobars --disable-restore-session-state --incognito

Я также попробовал пару команд sed, которые я нашел в Интернете.

Любая помощь будет принята с благодарностью.

Павел Карвецкий
источник
Вы смотрели в правильное отключение хрома?
Стив Робиллард
причина, по которой я предполагаю, что это лечит болезнь, а не побочные эффекты.
Стив Робиллард
Я думал о cronjob, чтобы отключить хром за 10 минут до запуска перезагрузки. Вот следующий шаг, есть предложения?
Павел Карвецки
Это может сработать, особенно если в сценарии используется графический интерфейс и перед перезагрузкой добавлена ​​проверка. Вы также можете полностью избежать перезагрузки. Если они отображают только одну страницу, вы можете посмотреть на fullpageOS.
Стив Робиллард
1
Вы можете использовать javascript для обновления через определенное время. stackoverflow.com/questions/2787679/… Скорее всего, вам не нужно обновлять каждые 5 секунд, но теория та же.
Стив Робиллард

Ответы:

25

Я понял! использование--app=your.url

Например:

chromium-browser --kiosk --app=http://your.url.here
Фабиано Ядра
источник
2
единственное, что сработало для меня на моем Pi Zero! Спасибо
DarkCygnus
Где ты был год назад :)
учуугака
Серьезно, это спасло меня от раздражения хромовым хромом. спасибо
учуугака
6

1) Я не знаю, почему --disable-infobars не работает для вас. Это хорошо работает для меня:

chromium-browser --kiosk --disable-infobars \
http://URL1 \
http://URL2 \
http://URL3

2) Лучшим способом обновить браузер (содержимое) было бы отправить его Control-R? например, в скрипте запуска вашего браузера выполните:

(while sleep 200; do xdotool key ctrl+R; done) &

(Я также посылаю Ctrl + Tab, чтобы переключаться между несколькими вкладками браузера

Найджел Пирсон
источник
4

Я знаю, что это на самом деле не решает проблему - но как обходной путь - это помогло мне.

Я убедился, что Chrome был выключен чисто ... Открыл терминал

cd .config/chromium/Default
chattr +i Preferences

Это делает файл неизменным ... только для чтения, Chrome может зависать столько, сколько ему нужно - он не будет отображать всплывающее окно, так как файл настроек больше не может быть изменен.

Эта настройка работает для меня, так как конфигурация Pi не изменится - она ​​просто отображает веб-приложение в режиме киоска.

Тремейн Сарджент
источник
Работает и в дистрибутивах Linux ... Обратите внимание, что могут быть проблемы в Windows / WebDriver / Selenium, о которых сообщалось в других источниках
MarcoZen
4

Для тех, кто прибывает сюда из Google:

Лучший способ выполнить эту задачу без использования инкогнито - это настроить два параметра в настройках Chromium. Они есть:

  • exited_cleanly
  • exit_type

Из того, что я понял из личных тестов, простое изменение параметра «exited_cleanly» может не всегда препятствовать запуску Chromium при запуске. Другие флаги, такие как -disable-infobars, также не будут работать.

Чтобы настроить эти параметры, добавьте следующее в файл запуска перед запуском Chromium (в зависимости от того, как вы настроили Chromium для автоматического запуска в режиме киоска, этот файл может быть расположен по адресу "/ etc / xdg / lxsession / LXDE- pi / autostart "," / etc / xdg / openbox / autostart "," ~ / .Xsession "или другой файл, в зависимости от того, что вы уже установили).

  • sed -i 's / "exited_cleanly": false / "exited_cleanly": true /' ~ / .config / chromium / Default / Preferences
  • sed -i 's / ”exit_type”: “Crashed” / ”exit_type”: “Normal” /' ~ / .config / chromium / Default / Preferences

Например, при моей настройке (с использованием Xsession) процедура будет выглядеть следующим образом:

  1. Введите "sudo ~ / .Xsession" в консоль
  2. Вставьте вышеупомянутые 2 строки в файл перед запуском Chromium (Вы должны увидеть строку, начинающуюся с «chromium-browser», поэтому вставьте их выше этого)
  3. Нажмите Ctrl + X, чтобы выйти из файла
  4. Тип "Y"
  5. Нажмите Ввод
  6. Перезагрузите машину

Опять же, файл, используемый для запуска Chromium, может находиться в другом месте, в зависимости от того, как вы настроили пи, но после изменения этих двух настроек Chromium должен запуститься без отображения сообщения о сбое.

Wincruzer
источник
2

Я нашел обходной путь, который позаботился о нескольких вещах одновременно.

vi restartscript.sh

#!/bin/sh
/usr/bin/killall chromium-browser
/usr/bin/apt-get update -y
/usr/bin/ apt-get upgrade -y
/sbin/reboot

Сделайте скрипт исполняемым: chmod +x restartscript.sh

Редактировать cron: chrontab -e

0 5 * * * /home/pi/restartscript.sh

Веб-страница, которую я показываю, обновляется, и пи обновляется.

Павел Карвецкий
источник
2

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

chrome_options.add_argument("--profile-directory=Default")

разрешил это для меня (в приложении без киоска).

Оказывается, это было только частью проблемы. Вся ситуация кажется очень изменчивой. Я дополнительно добавил:

prefs = {'exit_type': 'Normal'}
chrome_options.add_experimental_option("prefs", {'profile': prefs})

Пытаясь воспроизвести ошибку, чтобы доказать, что это было исправлением, я не могу теперь заставить его вернуться с всплывающим окном (даже без этого кода). YMMV, кстати, это работает версия 72 Chrome. Я видел другие посты, в которых предлагалось изменить файл настроек с помощью sed перед запуском браузера.

Bryan
источник
1

Мое решение очень простое. Я только копирую файл настроек из прежнего полного отключения Chromium поверх текущего файла ~/.config/chromium/Default/Preferences.

Фрэнк Рит
источник
0

Чтобы отключить пузырь Restore Pages, я дважды открываю chromium в файле автозапуска:

chromium-browser --no-startup-window --kiosk
chromium-browser --noerrordialogs --kiosk http://your.url.here

Первый получает всплывающий пузырь, но вы его не видите, затем второй открывается, как если бы браузер был успешно закрыт. Вероятно, не самый чистый способ сделать это, но это сработало для меня.

Шейн Лоукс
источник
0

Единственный способ, который работал для меня, это изменить конфигурацию перед запуском Chromium:

sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/Default/Preferences
Mikey
источник