Ошибка исчезает если класс Login "отцепить" от родительского класса.
Проблема как я поняла была в том, что IDEA распознавала Login как отдельный тест. Т.е. она смотрела в парент, видела аннотации @Before и @After и не понимала почему Login.login() - не тест.
Получается так:
import com.sun.java.swing.plaf.windows.resources.windows;
import org.junit.*;
import org.openqa.selenium.*;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebElement;
public class Login{
static String usedUsername = "testLogin";
static String usedPassword = "testPassword";
static protected WebDriver driver;
public static void login() throws Exception {
driver.get(baseUrl);
driver.findElement(By.name("username")).clear();
driver.findElement(By.name("username")).sendKeys(usedUsername);
driver.findElement(By.name("psw1")).clear();
driver.findElement(By.name("psw1")).sendKeys(usedPassword);
driver.findElement(By.name("ok")).click();
driver.get(baseUrl+"/folders");
}
}
Ну и по-прежнему:
public class TestList extends Parent{
@Test
public void testList() throws Exception {
Login.login();
driver.findElement(By.xpath("...(достаточно длинная ссылка на путь)" )).click();
driver.switchTo().window("listEdit");
driver.findElement(By.id("input")).clear();
...
}
Появилась правда ошибка инициализации драйвера. Сейчас в классе Parent есть такое место:
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
}
Т.е. Заходя в метод testList() IDEA должна сначала зайти в блок @Before, инициализирвоать драйвер, потом перейти к части @Test, там уже выполнить Login.
Но тут возникает проблема - в самом классе Login тоже нужно инициализирвоать драйвер ,чтобы не появился NullPointerException, но тогда как же инициализация этого драйвера в классе Parent? Не ясно. :(