Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Родословная тестирования



Родословная тестирования
2022-11-15 08:40

Автор: Джефф Найман (Jeff Nyman)
Оригинал статьи
Перевод: Ольга Алифанова

 

Тестировщики много спорят о том, может ли "кто угодно" тестировать. Ответ – да, если вы человек, вы автоматически тестировщик. Но не каждый будет специалистом тестирования. Я немного говорил об этом в статье, что значит быть тест-специалистом, и надо ли нам нанимать тест-специалистов. Тут я просто хочу подкрепить позицию, что живой человек – тестировщик по умолчанию, рассмотрев родословную этой концепции.

 

Читать статью полностью...



Уникальное имя скриншота
2022-11-15 18:45

Всем привет!

 

Друзья тренируюсь в написание авто тестов на selenium+java+testng, возникла необходимость делать скриншоты на ошибках. Реализовал стандартными средствами Selenium WebDriver

Внимание вопрос:

 

Как же сделать у каждого скриншота уникальное имя? Желательно дата и время а там как пойдёт. Часть кода где на данный момент делаю скриншот (пока реализовал в позитивной части теста)

package Topiframe.AppManager;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.*;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
import org.testng.annotations.Test;

import java.io.File;
import java.text.DateFormat;
import java.time.Duration;

public class NavigationHelper {

private void commission() {
    if (isElementPresent(By.cssSelector(".SmartInput_textFail__37qzX"))){
      LOG.error("Введённая сумма не входит в допустимый диапазон");
      Assert.fail();
    }
    LOG.info("Получаем стоимость услуги с комиссией");
    WebDriverWait wait = new WebDriverWait(wd, Duration.ofSeconds(10));
    try {
      wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".Service_inputsRow__1zBtT:nth-child(1) > .Form_value__cMLhf")));
      WebElement comm = wd.findElement(By.cssSelector(".Service_inputsRow__1zBtT:nth-child(1) > .Form_value__cMLhf"));
      String commission = comm.getAttribute("innerText");
      LOG.info("TL_COMMISSION = " + commission);
      WebElement tlAmount = wd.findElement(By.cssSelector(".Service_inputsRow__1zBtT:nth-child(2) > .Form_value__cMLhf"));
      String amount = tlAmount.getAttribute("innerText");
      LOG.info("TL_AMOUNT = " + amount);
      //Делаем скрин
      takeSnapShot(wd, "F:\\GitHub\\MyTests\\TopiframePayTest\\Screenshots\\date.png") ;
    }catch (Exception e) {
      LOG.error("Блок комиссий не доступен");
      Assert.fail();
    }
  }
  public static void takeSnapShot(WebDriver webdriver,String fileWithPath) throws Exception{
    //Convert web driver object to TakeScreenshot
    TakesScreenshot scrShot =((TakesScreenshot)webdriver);
    //Call getScreenshotAs method to create image file
    File SrcFile=scrShot.getScreenshotAs(OutputType.FILE);
    //Move image file to new destination
    File DestFile=new File(fileWithPath);
    //Copy file at destination
    FileUtils.copyFile(SrcFile, DestFile);
  }
}


Четыре столпа ООП, часть 1: инкапсуляция
2022-12-01 10:56

Автор: Баз Дейкстра (Bas Dijkstra)
Оригинал статьи
Перевод: Ольга Алифанова

 

В этой серии статей я углублюсь в четыре столпа (фундаментальных принципа ) объектно-ориентированного программирования:

  • Инкапсуляция (эта статья)
  • Наследование
  • Полиморфизм
  • Абстракция

Читать статью полностью...



В избранное