Обходной путь к вызову функции «selectFiles» для объекта Flash

#java #flash #webdriver #swfupload #selenium-webdriver

#java #flash #webdriver #swfupload #selenium-webdriver

Вопрос:

Я больше программирую на стороне сервера и javascript. Я никогда особо не работал с Flash.

У меня есть надежная HTML-форма, основанная на swfuploader на основе flash, и мне нужно протестировать ее с помощью Selenium 2 / WebDriver.

Проблема в том, что

 movieContent.CallFunction('<invoke name="selectFiles" returntype="javascript">'   __flash__argumentsToXML(argumentArray, 0)   '</invoke>');
  

не поддерживается во Flash 10…

Что мы должны делать? Если бы это было возможно, я мог бы js.executeScript(script);

Но теперь мне нужно выполнить что-то movieContent.click() в моих тестах java junit / selenium, но это не запускает окно выбора файла, оно ничего не делает.

Можно переместить мышь в указанные координаты и щелкнуть с помощью MoveToOffsetAction, но мне не удалось сделать это ни с FirefoxDriver, ни с ChromeDriver 2.0 b3 …

Ответ №1:

Это функция безопасности, предотвращающая доступ веб-сайта к локальной файловой системе на стороне клиента. Файловая система и доступ к ней возможен только при взаимодействии с пользователем в трассировке стека. IE: щелчок мыши.
Получение контроля над мышью также было бы нарушением безопасности.
Лучшим вариантом было бы инициировать selenium из функции flash с помощью события onclick.
Эта функция сначала позволит вам выбрать «тестовые» файлы для загрузки, а затем запустить тесты selenium с помощью функции.

Комментарии:

1. Как я уже сказал, я никогда не использовал flash и не собираюсь. Я использую драйверы Java Webdriver, также известные как selenium 2. Я могу инициировать тесты только из моих тестов java junit. К вашему сведению, вы можете взять под контроль свою мышь с помощью selenium 2, как это нарушение безопасности, когда selenium заключается в имитации действий пользователя? Тогда все было бы нарушением безопасности, не так ли?

2. Нарушение безопасности, о котором я говорил, было связано с flash, а не с selenium. Flash не может управлять мышью. Прошло несколько лет с тех пор, как я использовал selenium, и я не знал, что он может имитировать действия мыши.