ArrayList<String> tabs = new ArrayList<String> (webDriver.getWindowHandles()); webDriver.switchTo().window(tabs.get(1)); //switches to new tab webDriver.get("https://www.facebook.com");
webDriver.switchTo().window(tabs.get(0)); // switch back to main screen webDriver.get("https://www.news.google.com");
-Пробывал нажимать кнопки контрол+Т
Но каждый раз либо оно не открывает либо всегда пишет про ошибку (java: incompatible types: java.lang.String cannot be converted to com.sun.org.apache.xpath.internal.operations.String)
C этой ошибкой тоже разобратся не могу, пробывал в автоимпорт добавлять, но не работает. каждый раз надо добавлять изначально java.lang.String и только тогда уходит ошибка.
В этом же коде пишет вечно ошибку ( java: no suitable constructor found for ArrayList(java.util.Set<java.lang.String>)
constructor java.util.ArrayList.ArrayList(int) is not applicable
(argument mismatch; java.util.Set<java.lang.String> cannot be converted to int)
constructor java.util.ArrayList.ArrayList(java.util.Collection<? extends com.sun.org.apache.xpath.internal.operations.String>) is not applicable
(argument mismatch; java.util.Set<java.lang.String> cannot be converted to java.util.Collection<? extends com.sun.org.apache.xpath.internal.operations.String>))
Что не так я делаю?
и как открыть все же ссылку в новом вкладке?
Почему мы доверяем нашу жизнь машинам? Как известно, человек – существо ленивое. Если кто-то может постирать, раскопать, подумать (?) за нас, то мы с легкостью вверяем ему наши обязанности и переключаемся на более интересные вещи (прокрастинация в социальных сетях не считается ).
Но есть еще один немаловажный аспект: автоматизация любого процесса – это увеличение производительности. Профит правильно заавтоматизированного процесса улетает в космос. Возможности современных машин поражают воображение. Следовательно, не воспользоваться в тестировании благами автоматизации, наверное, было бы самой большой ошибкой в сфере разработки программного обеспечения.
Друзья, поделитесь опытом организации авто тестов?
В частности, подходом к организации тэгов.
У нас в текущем test suite около 900 тестов (в этом посте речь о UI) и набор не очень продуманных тэгов (добавляли, как и что получалось, в итоге их никто не поддерживает, некоторые тесты отмечены, некоторые - нет, некоторые - неправильными тэгами). Поэтому, на сегодняшний день, надежнее всего - запускать всё, что есть.
И это:
1. Долго (ну... относительно... у нас хороший Grid, но хотелось бы сделать прогоны более полезными). Кроме того, набор тестов растет каждый день.
2. Часто ломаются тесты, которые точно не имеют отношения к твоей текущей фиче и это блокирует релиз (или по крайней мере его замедляет).
Хотелось бы сделать организацию тэгов более грамотно - в частности, чтобы можно было запускать только необходимые для определенной функциональной области тесты, сократив время прогона, но главное - увеличив стабильность и прозрачность.
К сожалению, мне пока не удалось найти материалы по этой теме.
Из очевидных стратегий:
По фазе тестирования (Smoke, Full Regression) - предполагаю, поделить будет довольно легко, но это не решает проблему тестирования только необходимых компонент.
По приоритетам (Critical, Major, Medium, Minor) - думаю, это может быть слишком субъективный критерий. Кроме того, это не решает проблему тестирования только необходимых компонент.
По функционалу (User profile, Search, Checkout, etc.) - это решает проблему тестирования только необходимых компонент, но думаю, будет очень сложно четко определить границы разделения функционала и правильно его назвать, ведь один тест может относиться к нескольким областям, также есть зависимые области (придётся создавать и поддерживать ручную матрицу зависимости компонент???)
Комбинация из пары стратегий - скорее всего более точная, но команда может быть не в восторге от сложности определения к какому (-им) тэгу отнести тест.
В приложении есть кнопка (сразу скажу что это не мы разрабатывали эту функциональность, и повлиять на нее мы не можем), по нажатии этой кнопки, а что самое важное даже на поле возле кнопки открывается стандартное окно загрузки файла windows
--->
Делаю так:
Копирую в буфер обмена путь к ключу
public void copyPathToKeyToClipBoard(){
StringSelection copyToClipBoard = new StringSelection(ECPKeysConfig.pathToKey);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(copyToClipBoard, null);
}
После того как нажимаю на кнопку и открывается окно вставляю путь, так как поле в окне с путем к файлу активное, то никаких проблем не возникает
public void pastePathToKey() throws AWTException {
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
}
Но проблема в том что во время этой операции мне нужно обязательно фокусироваться на этом окне, то есть если на пример я запущу тест и на соседнем мониторе буду что то писать в word то этот путь к ключу просто будет вставлен в word.
Кто подскажет как решить эту проблему.
Сражу скажу что actions не работают. Также я не могу на прямую отправить путь к файлу в поле возле кнопки, в любом другом месте работает но не тут, так как после нажатия на поле открывается окно windows
Во вложениях есть фото с такой задачей я столкнулся, как правильно описать page object-ы, если это получается у нас таблица, где всегда новая открытка, так же как описать категорию, если она тоже меняется