Итак, я использую API selenium, и успешно его использую для тестирования на firefox и chrome. Но что мне нужно сделать, чтобы автоматически запускать те же модульные тесты для обоих браузеров. Я попытался поместить WebDrivers в объект ArrayList<WebDriver> drivers
, но тесты не работают корректно, если я делаю это так. На данный момент в ArrayList есть только один драйвер, но он все равно не будет работать только с одной записью. Вот какой-то код ...Запуск тестов JUnit В разных браузерах с использованием Selenium «Автоматически»
package testsuites;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class BingTests extends BaseTestSuite{
//private WebDriver fireFoxDriver;
private WebDriver chromeDriver;
private WebDriver fireFoxDriver;
private ArrayList<WebDriver> drivers;
@Before
public void setUp() throws Exception {
fireFoxDriver = new FirefoxDriver();
fireFoxDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
drivers.add(fireFoxDriver);
}
@Test
public void testGoogle(){
for(WebDriver driver: drivers){
driver.get("http://www.bing.com");
driver.findElement(By.id("sb_form_q")).clear();
driver.findElement(By.id("sb_form_q")).sendKeys("Selenium IDE");
driver.findElement(By.id("sb_form_go")).click();
driver.findElement(By.xpath("//ul[@id='wg0']/li[2]/div/div/h3/a/strong")).click();
WebElement elem = driver.findElement(By.id("mainContent"));
assertTrue(elem.getText().contains("Selenium News"));
}
}
@Test
public void isWikiContentCorrect(){
for(WebDriver driver: drivers){
driver.get("http://www.bing.com");
driver.findElement(By.id("sb_form_q")).clear();
driver.findElement(By.id("sb_form_q")).sendKeys("Saturn");
driver.findElement(By.id("sb_form_go")).click();
driver.findElement(By.linkText("Saturn - Wikipedia, the free encyclopedia")).click();
driver.findElement(By.cssSelector("li.toclevel-1.tocsection-9 > a > span.toctext")).click();
assertTrue(driver.getPageSource().contains("53 of which"));
}
}
@Test
public void isWikiTitleCorrect(){
for(WebDriver driver: drivers){
driver.get("http://www.bing.com");
driver.findElement(By.id("sb_form_q")).clear();
driver.findElement(By.id("sb_form_q")).sendKeys("Saturn");
driver.findElement(By.id("sb_form_go")).click();
driver.findElement(By.linkText("Saturn - Wikipedia, the free encyclopedia")).click();
assertEquals("Saturn - Wikipedia, the free encyclopedia", driver.getTitle());
}
}
@Test
public void testDropDownWithSelenium(){
for(WebDriver driver: drivers){
driver.get("http://www.bing.com");
driver.findElement(By.id("sb_form_q")).clear();
driver.findElement(By.id("sb_form_q")).sendKeys("Neptunes moon");
driver.findElement(By.partialLinkText("moons and rings")).click();
driver.findElement(By.linkText("Neptune (planet) :: Neptune's moons and rings -- Britannica Online ...")).click();
List<WebElement> elems = driver.findElements(By.tagName("Input"));
for(WebElement elem: elems){
System.out.println(elem.getText());
}
}
}
@After
public void tearDown() throws Exception {
for(WebDriver driver: drivers){
driver.close();
}
}
}
Спасибо за помощь. Я решил использовать TestNG, поскольку есть хороший плагин для eclipse, но он выглядит по существу так же, как ISFW. –
Да ISFW использует testNG в качестве основы тестирования и обеспечивает специфические потребности в селене, поэтому все функции tesNG могут быть использованы, включая плагин eclipse – user861594