2012-06-02 2 views
0

В настоящее время на старте OSX Selenium открывается новый значок Firefox на OSX. Кроме того, текущее приложение теряет фокус и, таким образом, прерывает, например. ваш ввод.Нарушение значка Firefox в OSX Dock при запуске тестов

Можно ли запустить Selenium Firefox на OSX таким образом, чтобы он не фокусировался или не вызывал дополнительных действий в Dock?

ответ

2

Вы можете легко изменить Firefox, чтобы он не отображался в доке.

В Finder щелкните правой кнопкой мыши значок приложения Firefox и выберите «Показать содержимое пакета». Затем откройте папку «Содержание» и отредактируйте Info.plist с помощью редактора списка свойств (поставляется с XCode) или BBEdit/TextWrangler. В начале файла добавьте ключ LSUIElement со значением <true/>. В BBEdit/TextWrangler начало файла будет выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>LSUIElement</key> 
    <true/> 

В списке свойств редактора, щелкните правой кнопкой мыши любую клавишу и выберите Показать Сырые ключи/значения, а затем щелкните правой кнопкой мыши запись верхнего уровня (» Information Property List ") и выберите Add Row. Задайте значение LSUIelement для значения этого элемента и отметьте этот флажок.

Я предложил использовать Редактор списка свойств или BBEdit/TextWrangler вместо какого-либо другого редактора, потому что большинство файлов .plist находятся в двоичном формате тезисов, и эти инструменты могут обрабатывать двоичные файлы .plist. Другие текстовые редакторы просто покажут тарабарщину. Тем не менее, я должен отметить, что вы можете преобразовать файл Info.plist в текст с помощью утилиты строки plutil команды и т.д .:

plutil -convert xml1 /Applications/Firefox.app/Contents/Info.plist 

Затем вы можете редактировать его в любом текстовом редакторе, вы хотите. Вам даже не нужно возвращать его обратно в двоичный файл; текстовый формат на самом деле будет работать нормально.

В любом случае сохраните файл info.plist и закройте и перезапустите Firefox. Значок (и строка меню) теперь исчезнет. (Нет, невозможно отобразить панель меню, но скрыть значок, но я не думаю, что это будет беспокоить Selenium.)

На ваш второй вопрос: технически можно запустить приложение, не придавая ему фокуса. Например, этот Applescript запускает Firefox и получает список окон, но не отправляет сообщение activate, которое выводит его на передний план.

tell application "Firefox" to get windows 

Вы можете отправить любое сообщение; часть get windows - это просто ничего не для наших целей. Дело в том, что вам нужно отправить сообщение , чтобы запустить его (AppleScript знает, что вы не можете отправлять сообщения в приложения, которые не запущены, поэтому он запускает его для вас, но в фоновом режиме).

Теперь я не уверен, как Selenium запускает браузеры, но может быть возможно изменить его, чтобы запустить Firefox с помощью инструмента командной строки osascript или что-то в этом роде и использовать приведенную выше команду.

osascript -e 'tell application "Firefox" to get windows' 

Я оставлю вас, чтобы положить эти кусочки вместе ...

+0

Благодарим за внимание! Я по-прежнему использую Firefox также в качестве основного браузера, поэтому я бы предпочел не изменять его напрямую. Также обновляется Firefox и так далее. Также существует исполняемый экземпляр Firefox, который не совпадает с экземпляром Selenium, хотя они используют один и тот же двоичный файл. –

+0

Просто сделайте копию Firefox. – kindall

2

Проблема связана с тем, что Firefox не всегда корректно срабатывает события, когда оно не имеет фокус. Это скоро будет исправлено, так как теперь это нормативная часть спецификации HTML5.

Я бы порекомендовал просто иметь очень легкую виртуальную машину, что-то вроде virtualbox или VMWare Fusion, и просто используя Remote WebDriver.

Смежные вопросы