У меня есть тест, который я хотел бы знать, можно ли запустить одним щелчком мыши. Я имею в виду, что у меня есть класс, который запускает другие классы, и другой, который запускает один (я сейчас занимаюсь исследованиями, поэтому тесты выполняются довольно просто. Поэтому у меня есть класс
package testNGresearch;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import multipleTest.Loginer;
public class AllLoginTestsNG extends OneClickTest{
public static WebDriver driver;
String baseUrl = "https://9gag.com/";
@BeforeTest
public void openBrowser() {
System.setProperty("webdriver.chrome.driver", "D:\\Selenium\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
@Test(priority = 1)
public void GetUrl() throws InterruptedException {
driver.get(baseUrl);
Thread.sleep(1500);
Loginer.login(driver);
}
@Test(priority = 2)
public void clickSignUp() {
Loginer1.signUp(driver);
}
@Test(priority = 3)
public void cancelSignUp() {
Loginer2.cancelSignUp(driver);
driver.close();
}
@Test(priority=4)
public void navigationTests() throws InterruptedException {
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get(baseUrl);
Thread.sleep(1500);
NavigationTestNG.navigation(driver);
}
}
, а затем еще один (отдельный файл)
package testNGresearch;
import org.openqa.selenium.By;
import org.testng.annotations.Test;
public class Loginer extends AllLoginTestsNG{
@Test
public void login() {
driver.findElement(By.xpath("/html/body/div[7]/div[1]/div[2]/div/div[3]/button[2]/span")).click();
driver.findElement(By.xpath("//*[@id=\"jsid-login-button\"]")).click();
driver.findElement(By.xpath("//*[@id=\"login-email-name\"]")).sendKeys("someuser");
driver.findElement(By.xpath("//*[@id=\"login-email-password\"]")).sendKeys("somepass");
driver.findElement(By.xpath("//*[@id=\"login-email\"]/div[3]/input")).click();
}
}
Затем второй, которым управляет класс AllLogin
package testNGresearch;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.Test;
public class Loginer1 extends AllLoginTestsNG {
@Test
public static void signUp(WebDriver driver) {
driver.findElement(By.xpath("//*[@id=\"jsid-signup-button\"]")).click();
}
}
Теперь у меня есть класс AllNavigation
package testNGresearch;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class AllNavigationTestsNG extends AllLoginTestsNG {
public static WebDriver driver;
String baseUrl = "https://9gag.com/";
@BeforeTest
public void openBrowser() {
System.setProperty("webdriver.chrome.driver", "D:\\Selenium\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
@Test(priority = 1)
public void startNavigating (WebDriver driver) throws InterruptedException {
driver.get(baseUrl);
Thread.sleep(1500);
NavigationTestNG.navigation(driver);
}
}
Который работает
package testNGresearch;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.Test;
public class NavigationTestNG extends AllNavigationTestsNG {
@Test (priority = 1)
public static void navigation(WebDriver driver) throws InterruptedException {
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[7]/div[1]/div[2]/div/div[3]/button[2]/span")).click();
Thread.sleep(500);
driver.findElement(By.xpath("//*[@id=\"top-nav\"]/div/a")).click();
}
}
Таким образом, вопрос в том - возможно ли создать класс, который запускает класс AllLogin и класс AllNavigationTestNG (который заставляет их запускаться один за другим)
Я создал класс OneClickTest, который выдает ошибки
package testNGresearch;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class OneClickTest {
public static void main(String[] args) {
WebDriver driver;
AllLoginTestsNG.allLogin(driver);
AllNavigationTestsNG.anotherLogin(driver);
}
}