Есть ли возможность использовать Robot framework + Remote WebDriver

Всем здрасти,

 
У меня вопрос бывалым:
Есть ли возможность использовать  Robot  framework (java.awt.Robot) на удалёнке (Remote WebDriver).
 
Заранее всем спасибо.

что вы хотите выполнить на удаленной машине?

 

Мне необходимо выполнить "upload" файла на удаленной машине.
Кнопка загрузки файла присутствует на странице, но к ней прицеплен флэш объект который и выполняет функционал загрузки файла (т.е. <input type=button....> ). 
при нажатии на эту кнопку появляется окно ОС -> после выбора файла через ОС файлом занимается флэш объект, который делает проверку файла и его загрузку. 
Т.е. просто отправив файл в "input" не получится никак.
Hажать на кнопку могу -> появляется окно ОС где нужно вибирать файл (всё на удалёнке) - на этом всё.
Вот сейчас думаю какой костыль приделать.
В голову пришло только попробовать Robot framework и AutoIt. 
 
Буду признателен за все советы.

для этого вам надо использовать setFileDetector() метод

более подробное описание вы сможете найти тут

http://sauceio.com/index.php/2012/03/selenium-tips-uploading-files-in-remote-webdriver/

 

 


import junit.framework.Assert;
import junit.framework.TestCase;
import org.openqa.selenium.*;
import org.openqa.selenium.remote.*;
import java.net.URL;
import java.util.concurrent.TimeUnit;
 
public class TestingUploadSe2Sauce extends TestCase {
    private RemoteWebDriver driver;
 
    public void setUp() throws Exception {
        DesiredCapabilities capabillities = DesiredCapabilities.firefox();
        capabillities.setCapability("version", "7");
        capabillities.setCapability("platform", Platform.XP);
        capabillities.setCapability("selenium-version", "2.18.0");
        capabillities.setCapability("name", "Remote File Upload using Selenium 2's FileDetectors");
 
        driver = new RemoteWebDriver(
           new URL("http://host.com/wd/hub"),
           capabillities);
        driver.setFileDetector(new LocalFileDetector());
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }
 
    public void testSauce() throws Exception {
        driver.get("http://url-to-upload-page.com");
        WebElement upload = driver.findElement(By.id("myfile"));
        upload.sendKeys("/Users/sso/the/local/path/to/darkbulb.jpg");
        driver.findElement(By.id("submit")).click();
        driver.findElement(By.tagName("img"));
        Assert.assertEquals("darkbulb.jpg (image/jpeg)", driver.findElement(By.tagName("p")).getText());
    }
 
    public void tearDown() throws Exception {
        driver.quit();
    }
}

Как я описал выше данный способ не работает (уже проверял), я знаком с предложенным методом довольно хорошо.

Просто послать файл в инпут не получается, т.к. у меня уплоад происходит через флэш объект.
Какие еще идеи?
 
 
Наши девелоперы для того чтобы рендерить этот флэш объект в JQuery используют plupload api, который позволяет им обрабатывать флэш  функционал, если кому то это говорит о чем то. 

Довольно стандартная идея :)   Попробовать использовать Robot Framework + Sikuli . Или просто Sikuli.  Не то чтобы был легкий в три шага путь, но возможно.
 
Я пользовался для справок по интеграции RF и Sikuli вот этим учебным материалом: http://blog.mykhailo.com/2011/02/how-to-sikuli-and-robot-framework.html
 
Сам пример не повторял (даже несмотря на то, что весь код выложен автором на GitHub), "пошел своим путем" набивать свои шишки. Далеко не заходил, но "HelloWorld", который находил на таскбаре иконку Skype (проверка возможностей визуального поиска), кликал на нее, а потом выводил диалог "Hello, World" — у меня получился. Думаю, что и с диалогом ввода получится.
 
Как базу, использовал пакеты
- Python (2.7.X)
- Robot Framework (2.7.X)
- Jython (2.5.X)
- Java 6.Х (текущая версия Sikuil работает только с Java 6)
- собственно Sikuli 
 
Также желателен Rapid Environment Editor для облегчения редактирования путей и переменных среды.
 
Свои тестовые тесты :)  я запускал не через pybot, более привычный для Robot Framework, а через jybottest (в нем были прописаны дополнительные необходимые пути  к .jar'ам).   
 

Насколько помню, в интернете должны быть и другие примеры интеграции Sikuli в RF, их можно легко нагуглить.
 
Готов отвечать на вопросы по Sikuli в пределах мне известного.

да, можно использовать sikuli в данном случае,

только наверное автор имел ввиду не RobotFramework а java.awt.Robot

Ну, если прямо из Java, то, наверное, и Sikuli надо будет вызывать тоже напрямую из Java (6), что тоже вполне возможно.

Так?

да, можно без проблем :)

мда .. костыль интересный конечно.

А возможно ли будет его запускать на удалённой машине через селениум грид, на которой будут прогоняться скажем 5 потоков (1 из которых будет использовать сикули? Не завалится ли он?

Придется ли запускать какой либо сервер на удаленке чтобы запускать сикули?

 

И еще - кто что думает о Autoit?

У меня такая же проблема, идет закгрузка через флеш. C использованием Sikuli я эту кнопку нажимаю, но вот как вбить имя файла не могу понять.

ну с вопросами многопоточности тут конечно надо будет поиграться

на счет удалленого запуска, встроенных инструментов нету

но есть обходные пути в виде вот таких вот проектов 

https://github.com/enix12enix/sikuli-remote-control

 

куда что вбить нужно? можно поподробнее?

с помощью Sikuli? надо просто найти нужное поле и напечатать туда текст

проблема решена просто нормально документации под сикули нету приходится все самому думать и пытатсья найти) 

1) http://doc.sikuli.org/ - официальная документация

2) https://answers.launchpad.net/sikuli - форум вопросов и ответов, большой и очень хорошо отвечаемый (ведется на английском). 
 
3) Задавайте вопросы здесь, на форуме, наконец - http://automated-testing.info/forum/instrumenty-avtomatizacii-testirovaniya/sikuli , только пожалуйста формулируйте Вашу проблему как можно понятнее и подробнее.

Мои наблюдения за вопросами и ответами по Sikuli показывают, что большинство задаваемых вопросов получают ответы, но для того, чтобы получить ответ, надо хорошо и подробно расписать ситуацию и вопрос.

это общая ситуация, люди думают, что телепатия - это уже норма и каждый кто на форуме обладает таким даром :)

а что Вы в документации не смогли найти?

зная как документируются разные фреймворки, то в sikuli не все еще и плохо