2013-02-20 2 views
2

Я пишу автоматизированные тесты для веб-сайта. Один из тестов нужно нажать Ctrl + S и введите несколько букв для сохранения веб-страницы, включая CSS/JS. Тест должен требовать, чтобы Firefox имел фокус окна на эти несколько секунд, чтобы иметь возможность ввести имя файла и нажать «Сохранить» (в настоящее время XDoTool используется для нажатия клавиш и нажатия мыши).Как запретить пользователю изменять ОС фокусное время/тип клавиш в течение нескольких секунд на Linux

Иногда я запускаю тесты на своем компьютере. Я не хочу иногда вводить что-либо или изменять фокус окна во время сохранения страницы, поэтому я хочу запретить изменение фокуса на эти несколько секунд, когда эти щелчки мыши/нажатия клавиш запущены.

Это невозможно сделать на уровне Webdriver (инструмент, который я использую для управления браузером), поэтому я думаю, что я должен сделать это на уровне ОС. Могу ли я запретить пользователю изменять фокус окна или набирать что-либо в течение определенного периода времени? Это может выглядеть следующим образом:

prohibit user from typing keys/change window focus 
save page 
allow user to type/change window focus 
+0

Это может заинтересовать: HTTP://blogs.msdn.com/b/oldnewthing/archive/2005/06/07/426294.aspx - возможно, вы можете объяснить на более высоком уровне то, что вы пытаетесь выполнить с помощью своего сценария, в случае, если есть лучший способ, чем контроль воровства от ваших пользователей. –

+0

Если вы уберете мой контроль над тем, какое окно имеет фокус, я не буду использовать ваше приложение. –

+0

@KeithThompson Я не пишу приложение, предназначенное для использования пользователями. Я пишу автоматизированные тесты для веб-сайта. Во время тестирования я бы хотел нажать Ctrl + S, чтобы сохранить веб-страницу. Это требует, чтобы фокус окна был помещен в Firefox в течение нескольких секунд. Я не хочу иногда вводить что-то или менять фокус окна –

ответ

2

Я думаю, что еще один способ для достижения желаемого эффекта будет запускать Firefox и автоматизированные тесты на вложенном X-сервере (xf86-видео-вложенный/Xephyr/Xnest).

$ Xnest :1 
$ export DISPLAY=:1.0 
$ firefox http://something/to/test & 
$ your-test-script 

Поскольку вложенная сервер X имеет собственное представление о том, сосредоточенного окна, перемещая фокус на рабочем столе не должно влиять на его.

(Если вы на самом деле не нужно, чтобы увидеть тест прогрессирует, вы можете использовать сервер фиктивная X (xf86-видео-манекен/Xvfb/Xfake) вместо)

+0

Как я могу набрать Ctrl + S и ввести имя файла в Firefox, открытое на другом X-сервере. (В настоящее время я запускаю его как «Xnest: 1',' export DISPLAY =: 1.0', 'rake features'). 'rake features' запускается на этом новом сервере X –

+0

Вы должны просто щелкнуть внутри окна Xnest, чтобы переместить фокус в окно firefox внутри него и ввести в него. Ваши автоматические тесты с использованием xdotool должны взаимодействовать с вложенным X-сервером при условии, что DISPLAY установлен правильно – jturney