понедельник, 22 августа 2016 г.

Пример работы с датой на Java(получение сегодняшней и завтрашней даты)

Получение сегодняшней и завтрашней даты и запись их в поля

Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = calendar.getTime();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String todayAsString = dateFormat.format(today);
String tomorrowAsString = dateFormat.format(tomorrow);
driver.findElement(By.name("start_date")).clear();
driver.findElement(By.name("start_date")).sendKeys(todayAsString);
driver.findElement(By.name("end_date")).clear();
driver.findElement(By.name("end_date")).sendKeys(tomorrowAsString);

воскресенье, 21 августа 2016 г.

HTTP ACCESS на Selenium WebDriver

Иногда бывает что страница защищена http паролем. В Selenium я пользовался такой конструкцией

Пример:
driver.get("http://user:password@example.com");
Если в логине или пароле используются спецсимволы то их нужно енкодить. Для енкода я использую Енкод. Енкодить нужно только логин и пароль, если заенкодить весь урл то может не отработать такой код.

Пример:
пример пароля который нужно екодитья #$/jda8$!
driver.get("http://user:%23%24%2Fjda8%24!@example.com");
Но лучше попросить разработчиков убрать http защиту для вашего IP, ибо иногда некоторые ссылки не принимают http авторизацию в урл.

Рефреш страницы с помошью Selenium WebDriver на Java

Вот реально работающие способы для рефреша страницы браузера.

Способ 1:
driver.navigate().refresh();
Способ 2:
driver.get(driver.getCurrentUrl());
Способ 3:
driver.navigate().to(driver.getCurrentUrl());
Способ 4:
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("history.go(0)");
К сожалению с помощью sendKeys(Keys.F5) у меня страница не рефрешилась, пробовал таким вот способом

Способ 1:
driver.findElement(By.id("element")).sendKeys(Keys.F5);
Способ 2:
Actions actions = new Actions(driver);
actions.sendKeys(Keys.F5).perform();

пятница, 19 августа 2016 г.

Пример настройки браузера Chrome для работы с SeleniumWebdriver+Java

При использовании веб драйвером Chrome браузер открывается с дефолтным профилем и без каких либо настроек. Я приведу пример использования некоторых настроек браузера при его вызове вебдрайвером. @Before
public void setUp() throws Exception {
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");//Опция при которой браузер открывается на весь экран
options.addArguments("--disable-extensions");//Опция при которой браузер открывается с отключенными расширениями
options.addArguments("--user-data-dir=C://Users/User/AppData/Local/Google/Chrome/User Data");//Опция при которой браузер открывается с указанным профилем
driver = new ChromeDriver(options);
baseUrl = "some URL";
}

Управление/переключение между вкладками браузера в SeleniumWebDriver

Иногда нужно переключится на новый таб в браузере и закрыть его, к примеру после клика на элемент открывается новый таб и вам нухно закрыть его. Вот простенький пример кода получения списка табов, переключения между ними и закрытие ненужного Вам таба
ArrayList tabs2 = new ArrayList (driver.getWindowHandles());//Получение списка табов
driver.switchTo().window(tabs2.get(1));//Переключение на второй таб в браузере
driver.switchTo().window(tabs2.get(0));//Переключение на первый таб в браузере
driver.close();//Закрытие активного таба

Как использовать JavaScript в Java

Иногда нужно использовать простой JavaScript в своем автотесте. Вот пример открывания нового таба(окна) в браузере с использованием JavaScript в Java
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("window.open('https://www.facebook.com/')");

Таймауты и ожидания в Selenium WebDriver

Иногда в автотестах нужно поставить таймаут(задержку), вот пару примеров:
Простой таймаут в секундах
TimeUnit.SECONDS.sleep(2);
Ожидание появления элемента
WebDriverWait wait = new WebDriverWait(driver, 600);
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(".innermail.ng-binding")));

Записки начинающего автоматизатора)

Как и все начинающие автоматизаторы я столкнулся с некоторыми проблемами при написании автотестов, поэтому некоторые решения я буду записываь в этот блог, чтоб все эти решения были всегда под рукой, и я мог воспользоваться ими в любой момент.