Мы пытаемся начать реализацию автоматизации для регрессионного тестирования на нашем веб -сайте на основе транзакций. Я успешно настраиваю Testng XML, чтобы открыть Firefox, IE и Chrome. И он будет запускать класс транзакций. В методе настройки с параметрами он проверяет для браузера и открывает правильный браузер для этого потока. Затем он направлен на тест метода Main (), который запускает класс входа в систему, прежде чем вернуться в класс транзакций, чтобы фактически пройти тест на транзакцию. Причина этого состоит в том, чтобы иметь организованную структуру, которая имеет только один тест в каждом классе в целях отладки. < /p>
Когда я запускаю этот тест, используя один пользовательский учетный данных, он работает нормально и завершает оба теста. Проблема заключается в том, что наша система позволяет пользователю вводить транзакцию раз в 10 секунд (только одна из наших функций безопасности, чтобы избежать освежающих или нескольких предложений транзакций). В любом случае, как лучше всего использовать несколько учетных данных пользователя? Я попробовал несколько логиков, которую я придумал, но каждый раз, когда Firefox будет использовать пользовательский имет1, а IE и Chrome будут использовать либо имя пользователя 2 или 3. /> ie = username2 < /li>
< /ul>
или < /p>
firefox = username1 < /li>
chrome = username3 < /li>
ie = username3 < /li>
ie = usernam />
Я придумал пару успешных решений, но мне пришлось дублировать классы или код. И в тесте я провел надлежащие классы для каждого браузера. Я думаю, что это плохое решение, хотя это работает. Тогда каждое, если утверждение будет иметь свое правильное имя пользователя. < /p>
Но мне также не нравится это решение, потому что мне пришлось бы добавить этот же код ко всем будущим тестовым классам, которые я создам, если я запускаю один тест, чтобы проверить новый код для разработки функции. Это просто повторяемый код, который, я думаю, должен быть в своем собственном классе. < /p>
Вот классы входа и транзакции перед конвертацией в Testng. Кроме того, я сделал класс среды, который содержит статические переменные, такие как имя пользователя и URL. < /P>
p.s. Я удалил кучу тестового кода, не нужную для этого вопроса. < /P>
ex: < /p>
static {
URL = "https://website.com";
DEFAULT_WAIT_TIME = 60;
SYSTEM_ID = "IDnumber";
USERNAME = "Username1";
PASSWORD = "Password1";
}
< /code>
import static org.junit.Assert.fail;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Login {
private WebDriver driver;
private String baseURL;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
//driver = new FirefoxDriver();
//baseURL = Environment.URL;
driver.manage().timeouts().implicitlyWait(Environment.DEFAULT_WAIT_TIME, TimeUnit.SECONDS);
}
public static void doLogin(WebDriver driver, String baseURL) {
WebDriverWait wait = new WebDriverWait(driver, Environment.DEFAULT_WAIT_TIME);
System.out.println("Log in to trunk...");
driver.get(baseURL);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("company_id")));
if (driver.findElement(By.xpath("//div[span='Log In']/span")).isEnabled()) {
System.out.println(" 1 - 'Login' page is opened");
} else {
System.out.println(" !ERROR! - Can NOT open 'Login' page");
driver.findElement(By.id("This is to throw exception if Can NOT open 'Login' page"));
}
driver.findElement(By.id("company_id")).clear();
driver.findElement(By.id("company_id")).sendKeys(Environment.SYSTEM_ID);
driver.findElement(By.xpath("//input[@name='username']")).clear();
driver.findElement(By.xpath("//input[@name='username']")).sendKeys(Environment.USERNAME);
driver.findElement(By.id("c_password")).clear();
driver.findElement(By.id("c_password")).sendKeys(Environment.PASSWORD);
System.out.println(" 2 - Info filled");
//I removed the rest of the code that finishes the login because
//I don't think it is needed for demonstration
}
@Test
public void main() {
doLogin(driver, baseURL);
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
}
< /code>
import static org.junit.Assert.fail;
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.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Transaction {
private WebDriver driver;
private String baseURL;
private StringBuffer verificationErrors = new StringBuffer();
public static String country = "22";
public static String ammount = "500";
@Before
public void setUp() throws Exception {
// System.setProperty("webdriver.ie.driver", "../IEDriverServer.exe");
// driver = new InternetExplorerDriver();
driver = new FirefoxDriver();
baseURL = Environment.URL;
driver.manage().timeouts().implicitlyWait(Environment.DEFAULT_WAIT_TIME, TimeUnit.SECONDS);
}
public static void doTransaction(WebDriver driver) {
WebDriverWait wait = new WebDriverWait(driver, Environment.DEFAULT_WAIT_TIME);
System.out.println("Performing transaction...");
// This is where the transaction code is ......
}
@Test
public void transaction() {
//Login first
Login.doLogin(driver, baseURL);
// Transaction
doTransaction(driver);
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/292 ... ser-log-in
Selenium - Multi Browser и Multi User Log ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
«java.io.FileNotFoundException: Velocity.log», добавленный в файл eclipse .log
Anonymous » » в форуме JAVA - 0 Ответы
- 51 Просмотры
-
Последнее сообщение Anonymous
-