Если не подходит, то создайте с помощью JavaScript элемент <input type="file"> и загрузите файл через него. Если всё правильно сделать, то файл уйдёт на сервер также, как он ушёл бы через Flash форму.
p. s.: По возможности оторвите руки вашим разработчикам, чтобы они перестали использовать Flash в пользу HTML5.
Чтобы написать код нужно иметь материал, с которым можно работать.
Официальная демка проекта http://demo.swfupload.org давно протухла.
Дай ссылку на реальную страницу с загрузчиком. Тяжело писать примеры вслепую.
Если в двух словах, то из твоего первоначального кода видно, что flash-объект отправляет файл по адресу uploadURL=/advertiser/v2/uploadBanner.html.
Очень может быть, что сработает вариант создать на JavaScript форму вида
< form action="/advertiser/v2/uploadBanner.html" enctype="multipart/form-data" method="post">
<input type="file" name="banner">
< /form>
Я не могу изменять контент сайта.
Так можно было попросить разрабов переписать все под HTML 5.0.
Есть абстрактный сайт, и необходимо автоматически загружать картинки.
Но на кнопку add file загрузки файла подвязан флэш.
В итоге вопрос: стандартный WebDriver 2.0 + Python могут решать эту проблему, если мы допишем какой-нибудь
Как видно из кода выше у нас есть поле загрузки файла и ссылка, которая это поле будет активировать.
Так часто делают, когда хотят скрыть стандартную для браузера форму.
Safari
Chrome
IE
Opera
Так вот, Selenium не сможет самостоятельно кликнуть по <input>, т. к. поля фактически нет на странице.
А кликнув по <a> Selenium ничего сделать дальше не сможет.
В таком случае необходимо избавить от стилей поля <input> и работать с ним напрямую.
Смысл понятен?
Мы временно, на стороне клиента, немного модифицируем html/css код для унификации его для Selenium.
Вот и тебе нужно создать поле <input> (как это сделать я давал ссылку выше).
Заполнить его и засабмитить форму.
@joemast@polusok ребята, что думаете, стоит ли написать отдельную статью по нестандартным элементам и о способах работы с ними в Selenium?
Часто бывает, что по тем или иным элементам нельзя кликнуть по разным причинам (z-index, visibility: hidden, position и т. д.).
@terpyakov я правда хочу помочь тебе в решении твоей задачи, но помоги и ты мне.
Я тебя просил подготовить тестовую публичную страницу с flash-формой загрузки файла, чтобы мы могли на ней поэкспериментировать и найти решение.
Я предложил тебе одно из возможных решений. Ты его попробовал? Получилось?
Вы мне очень помогли с предыдущей проблемой по айфрэймам )
Но тут я понимаю только в общих чертах - надо на стороне клиента подредактировать код страницы, а потом только запустить тест на Python + WebDriver, но практически не очень ясно как это реализовать.
Вы спрашивали про сайт, вот он, путь до кнопки Dropbox - Error
статься про то как достучаться к труднодоступным элементам - нужна и даже очень,было бы круто разобраться!
много раз сталкивалась с тем что не Selenium не может кликнуть по какому-то элементу. приходилось шаманить… но узнать еще способы как решить эту проблему очень хочется. заранее спасибо
Пробовал через готовое апи =) предоставляемое на сайте для разработчиков, свои проблемы есть.
Нельзя сказать что во всех аспектах WebDriver vs API => win API.