pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Почему в Bootstrap все js-файлы подключаются в конце?

Лучший ответ: https://developer.yahoo.com/performance/rules.html
Касательно js в конце: для того, что бы не грузить их вначале, а дать возможность браузеру сначала отрендерить важную для пользователя информацию
В принципе, аналогично атрибуту defered
Гугл говорит иначе - подключайте джаваскрипт именно в тех местах, где он нужен (что-то вроде инлайна)

Худший ответ: Они много весят. Если их грузить в начале - то страница будет грузится так же долго, картинка появится в конце. Почитайте про то как браузер "читает" полученный html. Сверху-вниз. Получив задачу загрузить что-либо (если это не AJAX) - он не читает html пока не загрузит это "что-то"
Вопрос: Как вставить разную информацию в блоки с одинаковыми классами?

Лучший ответ: используйте id или в случае с классами перебирайте каждый с помощью each()

Худший ответ: Всем спасибо. Рабочий код:setInterval(function(){
	$( ".timezone-time" ).each(function() {
		var serverTime = $( this ).text();
		var serverHours = serverTime.split(':');
		var hours = parseInt(serverHours[0]);
		var date = new Date();
		var minutes = date.getMinutes();
		var seconds = date.getSeconds();
		if (hours < 10) hours = "0" + hours.toString(10);
		if (minutes < 10) minutes = "0" + minutes.toString(10);
		if (minutes == 59 && seconds == 59) {
			hours++
			if (hours == 24) {
				hours = "00";
			}
		};
		$( this ).html(hours + ":" + minutes);
	});
}, 1000);
Вопрос: GUI frontend для Python приложения

Лучший ответ: Я бы рекомендовал PyQt4 или PySide (разница между ними). Все будет нативно (для Unix/Windows точно, во всяком случае).

Худший ответ: Ещё можете попробовать https://github.com/tito/kivy
Вопрос: Деплой джанги (и не только)?

Лучший ответ: fabric запускает скрипты (run) от имени пользователя, под которым произведен логин.
В случае использования команды sudo скрипт запускается от имени root.

По сути, результаты работы средствами fabric не отличается от работы средствами ssh-консоли. 
Непонятно, что в вашем случае кроется под выражением «проблема с правами», но регулируется все системой прав доступа к файлам операционной системы:
www.google.ru/search?q=unix+files+permissions

Худший ответ: Если у вас возникают такие вопросы, обратитесь к ближайшему сисадмину.
Вопрос: Книги по архитектуре веб приложений?

Лучший ответ: Вопрос настолько обширный, что врядли кто-то вам сможет посоветовать актуальную литературу, т.к. нужны примеры.
Большинство хороших архитектурных решений находится в постоянной разработке и люди, которые пишут книги, часто отстают лет на 5 от прогресса. А те, кто не отстает — находятся в творчесском процессе и им некогда писать книги.
По теме могу посоветовать смотреть в сторону ruby/nodejs/go фреймворков для различных веб-приложений и сервисов, каждый фреймворк затачивается под определенную задачу и, если есть желание эффективно работать в этой сфере, вам так или иначе придется это делать — без чтения чужого кода и участия в разработке этих самых фреймворков сейчас никуда, и это полностью заменяет литературу по теме.
Как пример, могу посоветовать сравнить www.sinatrarb.com (ruby), expressjs.com (nodejs) и martini.codegangsta.io (golang). Все они используют схему — создаем приложение, у приложения регистриуем обработчики для get/post/других запросов, в обработчиках получаем объекты request/response, и работаем с ними. Это считается базой для любых веб-сервисов, веб-приложений.
Когда нужны какие-то дополнительные функции — все делается независимо от этих модулей внутри колбеков, которые в них регистрируются и там зоопарк очень большой. Если нужны контроллеры, модели — есть rails, compoundjs, beego. Если нужно сделать REST — обычно, берется синатра + доп. модули, и получается что-то вроде loopback.io
Но, повторюсь, когда это все пишется у тебя на глазах, а цикл создания книги — год-полтора — то за это время технологии уже уходят далеко вперед и хороших книг с такой глубокой проработкой вопроса будет появлятся все меньше.

Худший ответ: А какая собственно разница ? Всерано на Django создатите лучше чем на том же php.
п.с Субьективное мнение. Отвечаю по своему опыту.
Вопрос: Android + json == NullPointerException

Лучший ответ: 1) Volley вызывает Listener на главном потоке (а не на worker потоке, который делал запрос)
2) Вы циклом ожидания заблокировали главный поток и поэтому Volley не смог вызвать ваш листнер (изза особенностей работы главного потока). А значит выхода из цикла не будет никогда - live-lock.
3) Т.к. onResponse уже на главном потоке, то никто не мешает там же отобразить результат в ГУИ.
4) Парсить жсон на главном потоке очень плохо.

Худший ответ: Я добавил:try{
     arrayList.add(map);
     Log.d(LOG_TAG, "(map): " + map.values());
     Log.d(LOG_TAG, "arrayList: " + String.valueOf(arrayList.size()));
}catch (Exception e) {
     Log.e(LOG_TAG, "arrayList.add(map): ERROR");
     e.printStackTrace();
}
в результате в логе(последняя строка):(map): [-61794185, <тут_url>, <тут_текст>]
arrayList: 271
т. е. в него пришло 271 значение... проблема в том, что они удаляются и в момент, когда я вызывал Log.d(LOG_TAG, String.valueOf(arrayList.size())); arrayList пуст...
Вопрос: $_FILES и ajax?

Лучший ответ: через айфрейм… по другому вроде никак

Худший ответ: Напрямую никак… Только Flash, IFrame…
Вопрос: Как объявить порт по умолчанию и не дописывать его в URL?

Лучший ответ: Ставим nginx и им слушаем 80ый порт, свою непонятную фигню, каковой является node.js, вешаем на ::1 и только на него на любом удобном порту, делаем конфиг nginx вида
server {
        listen 80;
        server_name nodejsdermo.gov.no;
location / {
              proxy_pass http://localhost:8080;
}
}
Где nodejsdermo.gov.no — имя сервера по которому обращаетесь, а 8080 — порт на котором вы запускаете свою маргинальщину. Не исключено, что еще стоит передавать заголовки про IPшник клиента вашей фигне, но это уж без меня нагуглите как делать.

Худший ответ: Поднимите удаленный сервер с убунтой на стандартном HTTP порту.
Мир не готов менять для вас стандарты
P.S. 
habrahabr.ru/post/153059
Вопрос: Выбор набора инструментов?

Лучший ответ: Имхо, проще собрать поштучно. В крупных строительных супермаркетах можно что душе угодно найти.

Худший ответ: паяльная станция
Вопрос: Автоматическое включение компьютера после появления электричества в сети

Лучший ответ: Если упс отключает комп штатно («умный», подключен по usb/com, идёт завершение работы), то он должен уметь и его включать (в настройках упса и в биосе «wake up on usb/com»). Если он отключает его просто обрубая питания, а потом питание обрубает, то настройка в биосе типа «on power fail» — «power on». Если же упс просто обрубает питание и ждёт пока на нём кнопку нажмут, чтобы снова его подать, то надо кнопку нажимать…

Худший ответ: В Биосе есть такая функция, НО после благополучного отключения компьютера, сам он уже не включится. Мысль была по поводу замыкания кнопки, но тогда интересует схемка примитивного устройства, которое будет проверять появилось ли 220В и как следствие замывать кнопку.
Вопрос: Macbook: что, если SSD поставлен неправильно?

Лучший ответ: А что по вашему мастер должен был сделать? Какое то особое шаманство?Есть разница ли разница?  конечно есть, диск стоит в другом месте. Нужно ли обратно будет перекидывать? на этот вопрос только вы можете ответить.
Кто кроме вас знает нужно ли вам менять местами диски в вашем ноутбуке?Если все таки мне повезло, тогда подскажите следующие действия! Сложный вопрос.
Можете выпить чаю например.

Худший ответ: С точки зрения интерфейсов - разницы нет никакой. Ну кроме того, что вы лишились CD-привода.
Вопрос: Как сделать свой игровой хостинг серверов?

Лучший ответ: Копать в сторону базового администрирования компьютера.
Если поднимать сервер под линуксом - учить работу с командной строкой линукса.
Сервера через php не создаются, можно на Php написать управляющие скрипты, или даже поискать готовые расширения для контры. Там были веб-админки и рейтинги.
RCON команды отправляются из командной строки.
В инете сервера CS ставятся каждым вторым школьником. Инструкций - более чем достаточно. Если не хватает понимания, как найти и воспользоваться готовой инструкцией - может быть лучше не надо?

Худший ответ: У меня кака раз ПУ для этих серверов лежит со всем необходимым вам функционалом. В свое время забросил, писал как хобби. Поэтому в этой теме у меня опыта до хрена.
Вам как раз нужна... Нет. Вам необходима ПУ для игрового хостинга, в функционал которой обязательно должно входить: управление демонами, работа со сценариями OS и так далее.
Есть бесплатные панели - говно. Сразу отбрасывайте эту идею.
Есть платные панели - в большинстве случаев ими можно обойтись.
Но лучше конечно - своя ПУ. Но написана обязана быть не по лоховски.
Исходя из своего опыта и наблюдений, запустить свой игровой хостинг - это очень затратная тема. И одному очень тяжело потянуть. Сейчас куча проверенных хостингов, с оперативными командами, со всем.
Исходя из того, что у вас ноль знаний во всей этой области (установка cs сервера вообще не дает вам никаких знаний), то для вас это будет очень затратным (как минимум).
А если у вас нет даже малейшего представления о бизнес плане и если вы даже не прокручивали это слово в последние моменты вашей идеи, то забудьте. Не стартанет, ибо хостингов больше, чем до хрена.
Выше Сергей пишет: "В инете сервера CS ставятся каждым вторым школьником."
Я добавлю, что каждый 10-ый загорается идеей создания своего хостинга. Каждый 100-ый что-то пытается сделать.
Вопрос: Какие существуют алгоритмы поиска оптимальной выборки/среза?

Лучший ответ: Регрессионный анализ

Худший ответ: k-Nearest Neighbours (kNN)
Ваша задача в терминах этого алгоритма соответствует вопросам :
1) как настроить веса (значимость) влияния параметров на расстояние между соседями
2) какое ядро выбрать
3) как определить оптимальное k для этого ядра
На все три есть конкретные ответы в виде алгоритмов - литературы очень много.
Вопрос: Какое выбрать расширение для огнелиса (FF), сохраняющее ссылки в облачке?

Лучший ответ: Можно использовать Fess Google Bookmark Extension, расширение сохраняет закладки на Google Bookmark.

Худший ответ: Я перепробовал много веб-приложений для таких вещей и в итоге стал тупо собирать в блоге ежемесячные подборки ссылок. В связи с чем и вам советую завести линкоблог ну или там в Twitter например ссылки постить.
Вопрос: Где найти понятную книгу по чистому js с нуля?

Лучший ответ: Знаменитый носорог.Дэвид Флэнаган - "JavaScript. Подробное руководств...

Худший ответ: Для себя выбрал JS Garden и nodejs от А до Я. Всем огромное спасибо
Вопрос: Как правильно верстать некоторые вещи?

Лучший ответ:  В большинстве проектов раньше использовал px. В последнее время перешёл на em и rem, где возможно.  Для меня во многом удобнее чем px, правда не везде. Так же не стоит забывать о поддержке браузерами rem, если решите использоватьВ 99% случаев выравниваю как Вы написали, padding и line-height. Самый удобный вариант. Со внешними шрифтами редко возникают проблемы. Не из-за того что у них отступы разные, а из-за того как выровнены символы относительно строки (в некоторых шрифтах символы могут быть смещены чуть выше или чуть ниже). Советую Вам использовать этот же метод. Просто на стадии дизайна, должен подбираться шрифт который "заточен" для веба.Подключаю так же. Для конвертирования использую fontsquirrel. Можно поэкспериментировать с настройками, для получения оптимального отображения в браузерахРодительскому контейнеру можно задать ширину 100% (чтобы растягивался по всей ширине окна) и overflow: hidden; Safari поддерживает тень, но чуть темнее она там отображается, если не ошибаюсь. (-webkit-appearance: none; )Скорее всего не сходятся цветовые профили. Почитайте тутТак же использую разделение спрайтов по группам (в основном при использование различных типов, размеров иконок в них). В большинстве случаев это удобно (если используется много иконок)С этим вопросом помочь не смогу, не изучал подробнее как большие фоновые изображения влияют на производительность и отображение

Худший ответ: 1. Использую вертикальный ритм Compass, rem с фолбеком в px если нужно
2,3 Также padding и line-height, есть шрифты которые не правильно выровнены, но это проблема шрифта, лучше подбирать проверенные шрифты или от гугла  e404.pw/articles/font-face
4. Можно скрыть полосы overflow: hidden; можно позиционирование использовать вместо margin, от ситуации зависит
5. Для стилизации селектов использую jquery плагины, чтобы везде одинаково было, или сбрасываю стили браузера (-webkit-appearance: none)
8. Залей одной картинкой и не парься, если никакой фрагмент фона нельзя использовать как паттерн или заменить цветом/градиентом, таков замысел дизайнера). Вообще конечно может имеет смысл обрезать, чтобы фон в верху сайта, который виден сразу загрузился быстрее
Вопрос: Как переписать класс?

Лучший ответ: Я бы сделал так. Переменную endpoint, конечно, можно не инициализировать, а сразу передавать строку в вызов _call_with_endpoint. Но так нагляднее.class Vehicle(API):
    def _call_with_endpoint(self, lang, fields, account_id, endpoint):
        if type(fields) is list:
          fields = self._format_fields(fields)  
        return self._api_call(endpoint=endpoint,
                              fields=fields,
                              language=lang,
                              account_id=account_id)

    def vehicle_stats(self, lang='ru', fields='', account_id=''):
        endpoint = '/tanks/stats/'
        return self._call_with_endpoint(lang=lang,
                                        field=fields,
                                        account_id=account_id,
                                        endpoint=endpoint)
        

    def vehicle_achievements(self, lang='ru', fields='', account_id=''):
        endpoint = '/tanks/achievements/'
        return self._call_with_endpoint(lang=lang,
                                        field=fields,
                                        account_id=account_id,
                                        endpoint=endpoint)

Худший ответ: class Vehicle(API):
    def vehicle_stats(self, lang='ru', fields='', account_id='', endpoint = '/tanks/stats/'):  
        if type(fields) is list:
            fields = self._format_fields(fields)	
        return self._api_call(endpoint=endpoint, fields=fields, language=lang, account_id=account_id)

    def vehicle_achievements(self, lang='ru', fields='', account_id='', endpoint = '/tanks/achievements/'):    
        if type(fields) is list:
            fields = self._format_fields(fields)	
        return self._api_call(endpoint=endpoint, fields=fields, language=lang, account_id=account_id
Как-то так. Если надо оставить все по-умолчанию, то просто не пишите последний параметр. Если надо изменить endpoint, то пишите в конце endpoint = "то_что_надо".
Вопрос: Почему битрикс не авторизует пользователя?

Лучший ответ: htmlspecialchars это лишние для функции USER->login

Худший ответ: Спасибо за решение. Вот по ходу еще один вопросик появился: в руководстве про эту функцию сказано, что: "Функция проверяет логин и пароль и если они корректные, то авторизует пользователя. Если авторизация успешная, то возвращает "true", иначе если логин и пароль некорректные, то возвращает массив с ошибкой для функции ShowMessage."
Вот я пытаюсь вывести сообщение об ошибке, но никак не получается((
Подскажите, пожалуйста, как правильно вызывать функцию ShowMessage()
Вопрос: Что такое — Once-off Setup fee 4,90 € (hetzner.de)?

Лучший ответ: 9.90 в месяц + 4,90 за установку, т.е. первый месяц 9,90+4,90, а дальше 9,90

Худший ответ: Единоразовая такса за установку настройку и ввод в эксплуатацию сервера для Вас как для нового клиента )
Взымается только один раз, потом платите лишь абонентскую плату.
Вопрос: Проблема с фотошопом или с железом?

Лучший ответ: Если аппаратную часть протестировал, то есть хар/память/проц/видео(тест на системном уровне) и все норм тогда скорее всего, даже нескорее всего а проблема именно в ОС а именноч тото происходить с процессом в ядре! надо системные ошибки изучать! Моя рекомендация:  1 сбрось всю инфу очисти хард полностью , переразметь его установи винду (10 пока не ставь, есть нестабильности, вообще я рекомендую поставь   последнии обновлениями и гуцай фотошоп!).

Худший ответ: А что с памятью, может просто увеличить ее на ноутбуке. Фотошоп память сьедает на раз при работе.
Вопрос: Как определить, сколько времени будет выполняться запрос к БД?

Лучший ответ: Выполнить запрос на ограниченном числе записей, а потом экстраполировать на имеющееся число записей?

Худший ответ: Запомнить время до, после и показать разницу? или необходимо подсчитать не запуская процесс?
Вопрос: Какие юзать курсы по HTML, CSS, PHP для начинающих?

Лучший ответ: Послушайте. Было бы смешно, если бы не было так грустно. Каждый день пачками появляются вопросы где и как научиться программировать. Ладно, я бы понял, если бы спрашивали как обучиться столярному делу или садоводству. Но блин... интернет просто пропитан компьютерной тематикой и, особенно, вебом. Гугл, самоучитель - и понеслась. Но нет же, надо зайти в QA и спросить "как мне выучиться?". Действительно, как же выучиться? Может быть старым испытанным способом: найти руководство, прочитать и выполнить советы? А где найти руководство? В поисковой системе? О, неужели это работает? А как сформулировать запрос? Достаточно вписать то что я хочу получить? Что ж, звучит недурно. Похоже, я и вправду смогу освоить эту хитрую технику. Но она такая сложная... я ведь учусь всего лишь в 10м классе...

Худший ответ: Советую почитать про шаблоны программирования. MVC, да и ООП в целом. Сразу же забыть просто mysql_* функции в пользу mysqli_* (Попов учит старый подход). В плане верстки увы, ничего не подскажу.
Вопрос: Как на Django реализовать график работы?

Лучший ответ: В TextField храню сериализованный в JSON объект типа:[{"start":"09:00","end":"14:00","lunch_start":"","lunch_end":""},
{"start":"09:00","end":"18:00","lunch_start":"13:00","lunch_end":"14:00"},
{"start":"09:00","end":"18:00","lunch_start":"13:00","lunch_end":"14:00"},
{"start":"09:00","end":"18:00","lunch_start":"13:00","lunch_end":"14:00"},
{"start":"09:00","end":"18:00","lunch_start":"13:00","lunch_end":"14:00"},
{"start":"09:00","end":"14:00","lunch_start":"","lunch_end":""},
{"start":"","end":"","lunch_start":"","lunch_end":""}]
Темплейттегом рендерится в форму:
На стороне клиента яваскриптом всё отслеживание и высчитывается. Решения проще не нашёл.

Худший ответ: Воспользуйтесь готовым JS решением. Вот один из первых найденных:
arshaw.com/fullcalendar (Сверху справа переключите на Day)
Если нужно полноценная интеграция в Django делайте по аналогии с djbook.ru/examples/12
Вопрос: Контекстная реклама на коммерческих сайтах и SEO?

Лучший ответ: Агрессивная, шокирующая и эмоциональная реклама - понижение в яндексе.
Весь первый экран забитый рекламой - возможно понижение в гугл.
В остальном не влияет 100%

Худший ответ: Если реклама ухудшает восприятие основной информации, то может помешать.
В целом же, если не перегибать палку Яндекс и Гугл сами заинтересованы в первую очередь, чтобы реклама была на сайтах. Они же вам и рекомендацию дают как лучше её разместить.
Вопрос: Как ускорить работу Sublime Text 2 через FTP?

Лучший ответ: Звучит как КЭП: не работать по FTP может?

Худший ответ: Бесплатный плагин. Достаточно удобен для синка (при сохранении обновлять на ftp) и умеренно — для получения с сервера (практически никогда не пользовался).
Вопрос: 6GB(2+4) ОЗУ в MacbookPro 2008 Late, будет ли потеря производительности и какие модели выбрать?

Лучший ответ: Может лучше поставить SSD? Производительность приятно порадует.

Худший ответ: А не взять ли 8 гигабайт, если он поддерживает? Память стоит копейки.
Вопрос: Будет ли популярен сервис тестирования на основе концепции краудсорсинга?

Лучший ответ: http://www.utest.com/   говорят штука популярная

Худший ответ: Идея интересная, но инди платить почти никто не будет. То есть в итоге будет портал тестеров, кто за идею тестирует кучу шлака и немного достойных приложений.
Хотя если составить конкуренцию utest, то может часть людей перейдёт на новый портал.
Опять же сильно много разработчиков не будет, так как все боятся показывать что-то до релиза, так как могут быстренько украсть идею и выпустить от себя.
Возможно имел бы смысл интегрировать в систему NDA и производить жёсткий отбор тестеров, но в этом случае теряется весь смысл простого тестирования.
Вопрос: Система отслеживания мнений и дискуссий?

Лучший ответ: Кроме Google Alerts у Яндекса есть аналогичный сервис — «Подписка на поисковые запросы» lenta.yandex.ru/settings.xml?name=feed&groupid=0

Худший ответ: Я использую просто толково составленный поисковый запрос в поиске по блогам яндекса.
Вопрос: Как сделать кнопки без круглых углов в Twitter Bootstrap?

Лучший ответ: Создаете файл main.css с содержимым .br0 {
    border-radius: 0px !important;
}
Дальше делаете подключение ПОСЛЕ css twitter bootstrap.
В коде пишите вот так <span class="btn btn-default br0">Bootstrap</span>
Пример на JsFiddle
Вообще, изменять less стоит только если надо железно сделать кнопки квадратными, в общем же случае, мой вариант куда практичнее.

Худший ответ: прямее правки css, а в случае с бутстрапом less или sass нету) ищите input-ы и их свойства border-radius и linear-gradient
Вопрос: Как в jquery дождаться анимации события, прежде чем начнет отрабатываться новое по другому событию?

Лучший ответ: Попробуйте использовать этот метод.
Алгоритм примерно такой. 1) Стоп любой соответствующей анимации. 2) Запуск анимации.stop method

Худший ответ: Выставь стопы$('selector').stop().animate({/*your properties*/});
Вопрос: Как получить доступ к Mikrotik?

Лучший ответ: Возьмите уж зубочистку в руки и сбросьте настройки к заводским.

Худший ответ: иногда зубочистка должна быть токопроводящей )))
Вопрос: Как правильнее указывать переменную или название объекта — myVar или my_var?

Лучший ответ: Для разных языков программирования приняты разные способы именования, к томуже именование зависит от того, что  собственно именуете - функцию, класс, объект.  Например для Python принят стандарт кодирования PEP8, а для Javascipt принят camel-case.

Худший ответ: Почитайте тут: habrahabr.ru/post/113044
Вопрос: Есть ли аналоги у Selenium?

Лучший ответ: Некоторые проблемы WebDriver (из сети и личного опыта):
-бывает, что поведение отличается в разных браузерах;
Т.к. сами браузеры ведут себя по разному. И в случаях, когда поведение отличается - пишется измененный скрипт.-иногда возникают сложности с поиском элементов (XPath и другие методы иногда просто не работают, хотя должны);
Правильный xpath - работает всегда. 
Опять же, многое зависит так же от технологии, которая используется в app'e и от стиля написания кода девелоперами.-необъяснимые падения драйвера прямо посреди теста;
Проверять нагрузку. Ранить локально и смотреть что происходит на странице.-взаимодействие возможно только с первой вкладкой браузера, драйвер позволяет открывать новые вкладки и новые ---окна, но не позволяет в них работать;
webdriver позволяет и открывать, и закрывать, и работать с новыми\старыми вкладками. -необходимо четко продумывать архитектуру теста, часто использовать assert или ожидания, чтобы тест умел «думать», --когда делать и когда нет. 
Придет с опытом.

Худший ответ: Если и есть, то наверное что-то специфичное только. Т.е. в целом по больничке можно считать, что вот прямо так готового коробочного аналога webdriver нет. Наверное допишу по недостаткам:
- невозможно сохранить файл через диалоговое окно браузера.
Пожалуй дополню/уточню имеющиеся:
-  поведение отличается да, но в принципе все варианты описаны в документации, где-что будет работать, а где не будет, к сожалению ситуация неизбежна;
- возможно неточный XPath (как вариант, поиск в DOM данных которые должны подгружаться в момент Х, но на момент запроса их еще нет)? Активно работаю с XPath и проблем не замечал;
- нестабильный это да, может просто большая нагрузка на одну ноду? Есть смысл посмотреть в сторону прокси от Яндекса, они там в опенсорц запили свой вариант.
В целом если нужно "как человек", то как ни крути, нужно использовать PhantomJS, дописать нужное поведение к нему на JavaScript и запускать его в режиме webdriver. Это не очень подходит для тестов (т.к. по сути работа сайта не проверяется в ХХ браузерах), но может неплохо отработать для бота.