Приветствую. Решил на проекте попробовать SikuliFirefoxDriver. Вот тут все показано и рассказано для того чтобы начать использовать его. Я не совсем понимаю откуда они берут такой URL картинки. (например, new URL(“https://dl.dropbox.com/u/5104407/lakewood.png”)). Картинки я нарезал, сложил в папку resources, в результате теста получаю - “java.net.MalformedURLException: no protocol: ./resources/AAA.png”, т.к URL принимает на вход ftp, http, https и т.д. Подскажите, пожалуйста как решить проблему?
Берут с дропбокса.
Можете попробовать преобразовать локальный путь к URL: Paths.get(filePath).toUri().toURL();
Или переопределить / перегрузить метод findImageElement. ImageTarget
имеет конструктор с File
параметром. Просто автор видимо писал все это дело под себя, не сильно заморачиваясь о других возможных кейсах.
К слову, я бы не рекомендовал использовать эту библиотеку, исходя из даты последнего релиза - Nov 2012. Смею предположить, что версия самого драйвера там древнючая, т.е. почти наверняка у вас тест упадет сразу после загрузки браузера (который я уверен - одной из последних версий).
Да и в целом, SikuliX
в полной мере сможет выполнить все то же самое. Отличие лишь в дополнительной обертке.
Браузер открывается, осуществляется переход по урлу, но картинку не находит. Видимо как то неправильно задаю путь. Буду смотреть в сторону SikuliX.
new URL("file:///full/path/to/AAA.png")
Не получается выполнить пока даже самый элементарный тест - зайти на google, и нажать кнопку “Войти” (справа, вверху). Картинка кнопки имеется
Картинка лежит в D:/temp/enter.png
Вот код:
@Test
public void firstSikuliTest() throws Exception {
SikuliFirefoxDriver driver = new SikuliFirefoxDriver();
driver.get("http://www.google.ru");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.manage().window().maximize();
ImageElement image = driver.findImageElement(new URL("file:///D:/temp/enter.png"));
image.click();
}
В результате открывается браузер, переход на google, и все, ничего не происходит. В консоли NPE
UPD: Убрал driver.manage().window().maximize(); и заработало!
А как быть, если на экране 2 и более абсолютно одинаковых элемента? Например 6 кнопок “Купить” А кликнуть надо естественно по какой-то конкретной.
Уже говорил, повторюсь, - использовать SikuliX. Там есть методы навигации относительно искомого элемента. Можно найти уникальный компонент и сместиться вверх / вниз / вправо / влево по-пиксельно.