Как интегрировать тестовые сценарии selenium IDE в azure devops pipe? - PullRequest
0 голосов
/ 26 февраля 2020

Я установил расширение selenium IDE для firefox, записал и создал набор тестов с 5 тестовыми наборами для тестирования 5 различных функций моего приложения. Как мне интегрировать эти тесты / набор тестов в мой azure devops конвейер? . Я имею в виду, какой тип задачи я должен добавить в свой конвейер для этой цели? Идея состоит в том, чтобы запускать этот тест автоматически при добавлении нового кода в репозиторий azure. Сохраненный набор тестов использует формат .side. Я также могу экспортировать свой набор тестов на разные языки, такие как Java + JUnit, JavaScript + Mocha et c. Теперь, как мне действовать дальше, если я хочу интегрировать эти тесты в мой azure pipe? plz help?

тестовый код, сгенерированный после экспорта в javascript moacha

// Generated by Selenium IDE
const { Builder, By, Key, until } = require('selenium-webdriver')
const assert = require('assert')

describe('Default Suite', function() {
  this.timeout(30000)
  let driver
  let vars
  beforeEach(async function() {
    driver = await new Builder().forBrowser('firefox').build()
    vars = {}
  })
  afterEach(async function() {
    await driver.quit();
  })
  it('create new folder', async function() {
    await driver.get("http://localhost:3000/")
    await driver.manage().window().setRect(1382, 744)
    await driver.findElement(By.css(".butt > span")).click()
    await driver.findElement(By.css("input:nth-child(2)")).click()
    await driver.findElement(By.css("input:nth-child(2)")).sendKeys("haleem")
    await driver.findElement(By.css("input:nth-child(2)")).sendKeys(Key.ENTER)
  })
  it('view creation', async function() {
    await driver.get("http://localhost:3000/")
    await driver.manage().window().setRect(1382, 744)
    await driver.findElement(By.css("#f1df1abf-ce3d-4fb9-b624-8768957d21b0 img")).click()
    await driver.findElement(By.css("h6")).click()
    {
      const dragged = await driver.findElement(By.css(".dragObject:nth-child(8)"))
      const dropped = await driver.findElement(By.css(".col-lg-12:nth-child(2) > p:nth-child(1)"))
      await driver.actions({ bridge: true }).dragAndDrop(dragged, dropped).perform()
    }
    {
      const dragged = await driver.findElement(By.css(".dragObject:nth-child(9)"))
      const dropped = await driver.findElement(By.css(".dropObject"))
      await driver.actions({ bridge: true }).dragAndDrop(dragged, dropped).perform()
    }
    await driver.findElement(By.css(".btn:nth-child(3)")).click()
    await driver.findElement(By.css(".saveFormInput")).click()
    await driver.findElement(By.css(".saveFormInput")).sendKeys("view sample updated")
    await driver.findElement(By.css(".saveFormButton:nth-child(2)")).click()
    await driver.findElement(By.css("#f1df1abf-ce3d-4fb9-b624-8768957d21b0 img")).click()
    await driver.findElement(By.css("#f1df1abf-ce3d-4fb9-b624-8768957d21b0 > li img")).click()
  })
  it('search filter', async function() {
    await driver.get("http://localhost:3000/")
    await driver.manage().window().setRect(550, 692)
    await driver.findElement(By.name("q")).click()
    await driver.findElement(By.name("q")).sendKeys("vig")
  })
  it('download functionality', async function() {
    await driver.get("http://localhost:3000/")
    await driver.manage().window().setRect(1382, 744)
    await driver.findElement(By.css("#f1df1abf-ce3d-4fb9-b624-8768957d21b0 img")).click()
    await driver.findElement(By.css("#f3b0fb9b-aa2f-4c14-aa79-f85af92f0fa3 img")).click()
    await driver.findElement(By.css(".btn:nth-child(2)")).click()
    await driver.findElement(By.css(".dropObject")).click()
  })
})

тестовый код, сгенерированный после экспорта в Java Junit

// Generated by Selenium IDE
import org.junit.Test;
import org.junit.Before;
import org.junit.After;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.core.IsNot.not;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Alert;
import org.openqa.selenium.Keys;
import java.util.*;
import java.net.MalformedURLException;
import java.net.URL;
public class DefaultSuiteTest {
  private WebDriver driver;
  private Map<String, Object> vars;
  JavascriptExecutor js;
  @Before
  public void setUp() {
    driver = new FirefoxDriver();
    js = (JavascriptExecutor) driver;
    vars = new HashMap<String, Object>();
  }
  @After
  public void tearDown() {
    driver.quit();
  }
  @Test
  public void createnewfolder() {
    driver.get("http://localhost:3000/");
    driver.manage().window().setSize(new Dimension(1382, 744));
    driver.findElement(By.cssSelector(".butt > span")).click();
    driver.findElement(By.cssSelector("input:nth-child(2)")).click();
    driver.findElement(By.cssSelector("input:nth-child(2)")).sendKeys("haleem");
    driver.findElement(By.cssSelector("input:nth-child(2)")).sendKeys(Keys.ENTER);
  }
  @Test
  public void viewcreation() {
    driver.get("http://localhost:3000/");
    driver.manage().window().setSize(new Dimension(1382, 744));
    driver.findElement(By.cssSelector("#f1df1abf-ce3d-4fb9-b624-8768957d21b0 img")).click();
    driver.findElement(By.cssSelector("h6")).click();
    {
      WebElement dragged = driver.findElement(By.cssSelector(".dragObject:nth-child(8)"));
      WebElement dropped = driver.findElement(By.cssSelector(".col-lg-12:nth-child(2) > p:nth-child(1)"));
      Actions builder = new Actions(driver);
      builder.dragAndDrop(dragged, dropped).perform();
    }
    {
      WebElement dragged = driver.findElement(By.cssSelector(".dragObject:nth-child(9)"));
      WebElement dropped = driver.findElement(By.cssSelector(".dropObject"));
      Actions builder = new Actions(driver);
      builder.dragAndDrop(dragged, dropped).perform();
    }
    driver.findElement(By.cssSelector(".btn:nth-child(3)")).click();
    driver.findElement(By.cssSelector(".saveFormInput")).click();
    driver.findElement(By.cssSelector(".saveFormInput")).sendKeys("view sample updated");
    driver.findElement(By.cssSelector(".saveFormButton:nth-child(2)")).click();
    driver.findElement(By.cssSelector("#f1df1abf-ce3d-4fb9-b624-8768957d21b0 img")).click();
    driver.findElement(By.cssSelector("#f1df1abf-ce3d-4fb9-b624-8768957d21b0 > li img")).click();
  }
  @Test
  public void searchfilter() {
    driver.get("http://localhost:3000/");
    driver.manage().window().setSize(new Dimension(550, 692));
    driver.findElement(By.name("q")).click();
    driver.findElement(By.name("q")).sendKeys("vig");
  }
  @Test
  public void downloadfunctionality() {
    driver.get("http://localhost:3000/");
    driver.manage().window().setSize(new Dimension(1382, 744));
    driver.findElement(By.cssSelector("#f1df1abf-ce3d-4fb9-b624-8768957d21b0 img")).click();
    driver.findElement(By.cssSelector("#f3b0fb9b-aa2f-4c14-aa79-f85af92f0fa3 img")).click();
    driver.findElement(By.cssSelector(".btn:nth-child(2)")).click();
    driver.findElement(By.cssSelector(".dropObject")).click();
  }
}

1 Ответ

0 голосов
/ 27 февраля 2020

Как интегрировать тестовые наборы selenium IDE в azure devops pipe?

Существует задача Тестовая задача Visual Studio , которая поддерживает:

модульные и функциональные тесты (Selenium, Appium, Coded UI и др.) С использованием Visual Studio Test Runner. Кроме тестов на основе MSTest, также могут быть выполнены тестовые среды с тестовым адаптером Visual Studio, такие как xUnit, NUnit, Chutzpah .

enter image description here

Итак, мы могли бы использовать эту задачу для выполнения тестового примера для javascript moacha.

Но экспортируемый файл - это отдельный файл, а не библиотека, поэтому нам нужно создать небольшое проектное приложение библиотеки. Мы будем использовать этот проект для компиляции наших тестовых файлов, экспортированных из Selenium IDE. После того, как мы создали проект, нам просто нужно скопировать наш экспортированный файл .cs в наш проект и скомпилировать dll.

Если мы хотим интегрировать тесты Selenium с devops Azure, нам нужно pu sh этот проект библиотеки для репозиториев, затем используйте задачу Visual Studio Test для его сборки.

Надеюсь, это поможет.

...