Этот файл может быть опасен как отключить selenium
Я использую selenium chromedriver для автоматизации веб-приложений. В моем приложении мне нужно загрузить файлы xml. Но когда я загружаю XML-файл, у меня появляется всплывающее окно «Этот тип файла может нанести вред вашему компьютеру». Я хочу отключить это всплывающее окно с помощью selenium chromedriver, и я хочу, чтобы файлы этого типа загружались всегда. Как это может быть сделано?
- Версия Selenium: 2.47.1
- Версия Chromedriver: 2.19
ОБНОВЛЕНИЕ это давняя ошибка Chrome с 2012 г.
Проблема с XML-файлами стала возникать у меня с Chrome 47.0.2526.80 m. Потратив, может быть, 6 часов, пытаясь отключить все возможные варианты безопасности, я попробовал другой подход.
Я использую Ruby с Watir-Webdriver, где код выглядит так:
В последней версии Google Chrome вышеуказанного решения недостаточно. Дополнительно необходимо запустить браузер со следующим переключателем:
Теперь код для запуска браузера будет выглядеть примерно так:
Я публикую ниже полный код, с которым у меня работает загрузка файла: Надеюсь, это поможет :-) Я использую Java-Selenium
Единственное решение, которое работает для меня:
Использовать аргумент с путем к профилю Chrome
Сделайте резервную копию этого файла, а затем откройте в любом шестнадцатеричном редакторе (вы можете использовать онлайн).
Найдите тип файла, который вы хотите загрузить, например xml , и измените его на что угодно, например xxx
Для меня работает следующий код Python
Для контекста у меня был .csv со списком .swf flash-документов и их соответствующих URL-адресов. Поскольку к файлам можно было получить доступ только после действительного входа в систему, я не мог использовать простое решение на основе requests .
Как и .xml , загрузка .swf вызывает аналогичное приглашение.
Поэтому я убрал все лишние аргументы и настройки, предложенные выше, и просто создал экземпляр chrome headless .
принято answer перестал работать после недавнего обновления Chrome. Теперь вам нужно использовать переключатели командной строки --safebrowsing-disable-extension-blacklist и --safebrowsing-disable-download-protection . Это конфигурация WebdriverIO, которая мне подходит:
Обратите внимание, что я также отключаю расширения, поскольку они обычно мешают автоматическому тестированию, но это не обязательно для решения проблемы с загрузкой файлов XML и JavaScript.
Я нашел эти переключатели, прочитав этот список. Вы также можете увидеть их в Chromium источник.
Я использую версию Google 80.0.3987.122 (официальная сборка) (32-разрядная версия) и ChromeDriver 80.0.3987.106. Получение той же ошибки даже после добавления ниже при загрузке файла .xml.
Мне интересно, как отключить javascript при использовании селена, чтобы я мог проверить проверку на стороне сервера.
Я нашел эту статью, но я не знаю, что на самом деле делать. Как я делаю этот файл javascript, то что?
редактировать
Оригинальный ответ
Другие возможности будут:
Это способ сделать это, если вы используете WebDriver с FireFox:
Это простой ответ, хотя бы для python.
Действия по использованию упомянутого выше script не являются плохими:
По состоянию на 2018 г. вышеуказанные решения не работали для меня для Firefox 61.0.1 и geckodriver 0.20.1 .
И вот решение, которое работает.
Теперь в строке поиска введите javascript и вы должны увидеть следующее.
Похоже, что создание этого файла даст вам функции, которые вам нужно отключить javascript для вашего теста. Вы вызовете функцию doDisableJavascript перед началом теста и функцией doEnableJavascript, если вы хотите снова включить ее.
Надеюсь, это сэкономит время, которое потребовалось мне, чтобы найти его.
Задайте имя браузера в настройках селена на htmlunit .
Если вам нужно решение с Chrome, Chromeriver, Python. Это работает для любой версии Chrome, при условии, что макет для отключения JS остается прежним.
Вам не нужно отключать JavaScript. Если вы заполните форму, вы можете использовать JavaScript для отправки своей формы, например. используйте runScript и window.document.forms[0].submit() .
Всякий раз, когда вы вызываете submit() непосредственно в форме, форма отправляется непосредственно на сервер, нет события onsubmit, и, следовательно, нет проверки на стороне клиента. (Если ваше действие формы не похоже на javascript:validateForm() , в этом случае ваша система не работает, когда JavaScript отключен).
Вы можете отключить JavaScript во время выполнения, используя код:
Я подставляю этот параметр в конфигурации Options(), я не помню, от кого я его увидел (для кого-то на SO), но он работает:
Что пишут в блогах
Онлайн-тренинги
Что пишут в блогах (EN)
- Agile Testing Days 2021 - My Heart Is Full
- Balancing the Speaker Circuit
- Agile Testing Days 2021 – Part 1
- Automate for yourself first
- I’m now a Developer Advocate!
- Keeping the Customer Satisfied
- Lessons Learned in Finding Bugs
- Workshop on Built-in Quality at the Agile Testing Days
- Increasing Understanding of Modern (Exploratory) Testing
- The George Foreman Heuristic for Quality
Разделы портала
Про инструменты
Автор: Алексей Баранцев
Недавно ученики моего курса Программирование для тестировщиков пришли ко мне с жалобой – тесты, которые у них успешно выполнялись в браузерах FireFox и Internetr Explorer по непонятной причине падали в браузере Google Chrome. Когда я посмотрел, что происходит, мне показалось, что я вернулся лет на пять в прошлое – налицо были все симптомы проявления same origin policy, с которым давно уже все научились бороться при использовании браузеров Internet Explorer и FireFox.
Страшные слова same origin policy знакомы практически каждому тестировщику, который начал использовать Selenium достаточно давно, когда ещё не было режимов запуска *iehta и *chrome. Производители браузеров, заботясь о защищенности пользователей, изобретают различные средства борьбы с уязвимостями в веб-приложениях. И как одно из средств защиты от XSS-уязвимостей, был придуман запрет в JavaScript-коде получать данные с любых сайтов, за исключением того, с которого был первоначально загружен этот самый JavaScript-код. Вот он-то и называется same origin policy.
Мы не будем здесь обсуждать, насколько этот запрет эффективен как средство защиты. Важно то, что его наличие вызывает проблемы при выполнении тестов при помощи Selenium. Дело в том, что ядро Selenium реализовано на языке JavaScript. При запуске теста ядро загружается в браузер, и всё работает хорошо до тех пор, пока в процессе выполнения теста не возникает необходимость перейти на другой сайт – браузер немедленно замечает это "опасное" действие и блокирует его.
Чтобы обойти это ограничение, были реализованы специальные режимы запуска браузеров с отключеной защитой, это режим *chrome для браузера FireFox и режим *iehta для браузера Internet Explorer.
А вот для браузера Google Chrome существует только один единственный режим запуска *googlechrome, и в этом режиме он запускается с включенными средствами защиты.
Но всё-таки способ отключения защиты существует, решение удалось найти, и я хочу поделиться с вами этой информацией. Ключ к решению заключается в использовании опции --disable-web-security. Вопрос лишь в том, как заставить Selenium запустить браузер с этой опцией.
Если вы пишете на языке Java и наследуете свой класс от SeleneseTestCase или SeleneseTestBase, инициализация браузера скорее всего выполняется обращением к методу setUp:
Но для запуска с отключенной защитой такой способ не годится, необходимо сделать свой собственный метод инициализации браузера. Конечно же за основу можно взять тот самый стандартный метод setUp, который выглядит следующим образом (это вариант с наибольшим набором параметров):
Как несложно видеть, здесь у объекта selenium вызывается метод start без параметров. А нам нужно вместо этого вызвать другой метод start, принимающий на вход строковый параметр, через который можно передать указания, пользуясь которыми Selenium Server построит полную строку запуска, включая опции браузера.
Указание отключить защиту в Google Chrome можно передать двумя способами, либо так:
При этом разработчики в комментариях неявно намекают на то, что второй способ предпочтительнее, но я рекомендую использовать первый способ. Причина в том, что второй способ конфликтует с браузером Safari при запуске в режиме *safari (если честно, чисто теоретически я бы ожидал с большей вероятностью возникновения конфликтов при первом способе, но практика показывает обратное).
Итак, создаём свой собственный метод и везде, где нужно, используем его вместо стандартного метода setUp:
Я продолжаю получать это раздражающее предупреждение при копировании файлов по сети:
Эти файлы могут быть вредны для вашего компьютера
Ваши настройки безопасности Интернета предполагают, что один или несколько файлов могут быть вредными. Вы все равно хотите его использовать?
Я копирую файл с \\192.168.0.197\c$ (домашнего сервера) на мой локальный компьютер, который находится по адресу \\192.168.0.4 .
Как мне отключить это бессмысленное «предупреждение»?
Если я вырезать и вставить (Ctrl-X, затем Ctrl-V), я не получаю эту проблему. Если я щелкаю и перетаскиваю те же файлы (из того же источника, что и Ctrl-X, и в то же место, что и Ctrl-V), я делаю. Это кажется мне немного странным, хотя я не уверен, что я неправильно понял что-то семантически или это ошибка.Я нашел исправление, изменив «параметры интернета» - так что я предполагаю, что Windows определяет «интернет» как свою собственную сеть . вздох.
Это сработало для меня, но обидно, что мне приходится вручную вводить здесь IP-адреса . было бы неплохо, если бы Windows могла обнаружить это локальную сетевую копию файла и пропустить раздражающее (и бессмысленное) предупреждение об «опасных» файлах.
Sidenotes:
обратите внимание на @gerbenny ответ внизу о подстановочных знаках в диалоге сайтов. Обратите внимание, что если общий ресурс сети открыт во время внесения этого изменения, его необходимо закрыть и снова открыть, чтобы увидеть это изменение. Это также увеличило скорость копирования с сети на 50%! (через Wi-Fi)Используя Windows 7, я добавил свой IP-адрес с подстановочным знаком:
Теперь все IP-адреса в этом диапазоне являются частью "локальной сети".
ах, хороший совет, не ясно, что диалог поддерживает символы подстановки. Можете ли вы объяснить, для чего вы добавляете этот IP-адрес? @CharlieHarding: Этот ответ был дополнением к ответу Джеффа от 5 июня 2010 года. Итак, вы добавили бы его в диалоговое окно «Локальная интрасеть». Это говорит мне, что я ввел недопустимую последовательность символов подстановки, когда я пытаюсь добавить *.local .Если вы хотите сделать это в групповой политике, эта цитата может быть вам полезна.
Последний параметр теперь называется «Показывать предупреждение безопасности для потенциально небезопасных файлов» и должен быть включен с параметром «Включить».Недавно мы установили новый сервер с использованием DFS, и у меня возникла та же ошибка. Я закончил тем, что вставил:
После нажатия на кнопку добавить, он показал:
Я попробовал * стихи ? , но это было запрещено.
Я сделал procmon и нашел, где настройки хранятся в реестре - это для моей сети 192.168.1. *:
Это для моего \ NAS сервера:
Вот как это выглядит в панели управления настройками интернета:
Я полагаю, что вы не получите предупреждение, если будете использовать имя netbios вашего домашнего сервера вместо ip-адреса. Если вы используете IP-адрес или произносите полное имя DNS удаленного компьютера, он не распознает его как находящийся в зоне интрасети. другой вариант, как упомянуто ранее, состоит в том, чтобы вручную добавить его в список зон интрасети.
Недавно я получил ту же ошибку и нашел способ навсегда отключить это предупреждение (я знаю, какие файлы я хочу открыть, так что да, я уверен, что хочу отключить это предупреждение . ):
- зайдите в настройки Интернета (в Internet Explorer)
- перейдите на вкладку «Безопасность»
- нажмите на «Пользовательский уровень» (с выбранным «Интернет» = первый значок)
- в разделе «Разное» выберите «Включить (небезопасно)» для параметра «Запуск приложений и небезопасных файлов (небезопасно)»
- нажмите «ОК» и затем примените изменения; у вас будет предупреждение с вопросом, действительно ли вы хотите это сделать (вам придется сказать «да»)
Вот и все. :) Веселиться.
Скорее всего, вы обнаружите, что за этот ответ вам отказывают, поскольку он ведет к неоправданно уязвимой системе. Я голосую, кажется резким, чтобы понизить голос, поскольку ОП задает вопрос о том, как сделать систему немного более уязвимой - поэтому любой ответ может справедливо предположить, что ОП не ищет наиболее надежный ответ .Добавление этих двух строк (без изменения настроек локальной интрасети по умолчанию) - это быстрое решение:
Вам нужно отключить и повторно подключить общие ресурсы, чтобы это работало.
Другие решения здесь не работали для меня в Windows 7, но я нашел подходящее: удалите Internet Explorer через «Установка и удаление программ», а затем настройте функции Windows. Отключите Internet Explorer 8. Больше не надоедать!
Вот как я исправил проблему. Сначала вот моя установка. У меня Windows 10 на моем диске C: \, разделенном диском D: \ letter, на котором я храню свои личные файлы. Появилась всплывающая ошибка «Безопасность Windows. Эти файлы могут быть опасны для бла-бла». Я не знаю, как и почему. Но это случилось только с двумя папками на диске D: \. Как, почему и когда у меня все еще нет никаких подсказок . или возможно. Но давайте исправим это. Я скопировал \ вставил все, что мне больше всего нужно, на диск D: \ на внешний жесткий диск. Затем я отформатировал диск D: \ и скопировал \ вставил обратно по кусочкам (проверяя между ними) папки, которые я сохранил на внешнем устройстве. Проблема бинго решена. Конечно, это звучит любопытно. Технология любопытна время от времени.
Я думаю, что разрешения, разрешения, права собственности и т. Д. Могут иметь какое-то отношение. Почему я не знаю, но эти настройки вернулись в положение по умолчанию "И я часто изменял их раньше. С другой стороны, я могу ошибаться. Я просто замечаю некоторые вещи здесь. Или, возможно, буквы на некоторых внешних дисках изменились, потому что USB-ключи или внешний диск Постоянные входы и выходы. В любом случае, я надеюсь, что эта настройка будет полезна для тех, кто еще не нашел исправления и чувствует, что кто-то наблюдает за ними. Я должен сказать, что эта проблема была одной из самых сложных, которые я когда-либо разобрался с. Jeeeez Cheeez Wizzzz парни!
Читайте также: