Я новичок в автоматизации QA и имею средние знания в java, поэтому решил использовать (Selenium+Java) для автоматизации. Я прикреплю код, который я сделал, к автоматизации. И скрипт работает без сбоев. Но структура, которую я сделал, неверна, поскольку я хочу следовать модели (POM-Selenium).POM-Page Oriented.
Этот скрипт перемещается следующим образом
Логин(Страница)-->Персональный(Перетаскивание/выбор вниз)--->ДобавитьEdit((Перетаскивание/выбор вниз))-->Личный(Страница)-->Добавить(Кнопка)-->ЛичныеДетали(Страница)
Тестовый сценарий.......
пользователь должен «войти» в систему и щелкнуть раскрывающийся список «личные» на вкладке навигации, после чего появится раскрывающийся список «Добавитьредактирование». следует нажать кнопку «Добавить» на этой странице, чтобы перейти на другую страницу под названием «Личные данные». Пользователь может добавить соответствующие поля, которые предоставляются на странице, чтобы добавить нового клиента.
Пожалуйста, помогите мне упорядочить это в структуре POM. Потому что мне очень трудно думать, как это происходит. Что меня расстраивает, так это то, что пользователь может добавить соответствующую запись, он / она должен войти в систему и в POM. говорит, что вход в систему - это отдельная страница, мне нужно пройти через три страницы, чтобы выполнить задачу. было бы здорово, если бы вы могли мне помочь. и она открыта для обсуждения, и извините, если мой английский плохой. и, пожалуйста, считайте меня полным нубом, когда дело доходит до автоматизации :) спасибо!
Это тестовый сценарий, который я написал...
package TestNG;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
import org.openqa.selenium.*;
import org.openqa.selenium.By.ByXPath;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.*;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.Test;
//public String baseUrl;
//public String driverPath;
//public WebDriver driver;
public class Tester {
public String baseUrl = "http://xxx.xxx.xxx.xxx:xxxx/xxx/";
public String driverPath = "C:\\Users\\User\\Desktop\\geckodriver.exe";
public WebDriver driver;
@Test(priority = 0)
public void Login() {
System.out.println("launching firefox browser");
System.setProperty("webdriver.gecko.driver", driverPath);
driver = new FirefoxDriver();
driver.get(baseUrl);
WebElement username = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id=\"userId\"]")));
username.sendKeys("xxxxxxxxx");
WebElement password = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id=\"loginPassword\"]")));
password.sendKeys("xxxxxxxxxxxxxxxxxx");
WebElement button = (new WebDriverWait(driver, 10)).until(ExpectedConditions
.presenceOfElementLocated(By.xpath("/html/body/div/div[3]/div/div/form/div[3]/div[2]/div/button")));
button.click();
String expectedTitle = "xxxxxxxxxxxxxxxxxxxxxxxx";
String actualTitle = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.xpath("/html/body/div[2]/div[2]/div/div/h1")))
.getText().toString();
// System.out.println(actualTitle);
Assert.assertEquals(actualTitle, expectedTitle);
// driver.close();
}
@Test(priority = 1)
public void Personal_Tab_Selection() {
clickWhenReady("/html/body/div[2]/div[2]/nav/div/div[2]/div/div[1]/ul/li[5]/a", 10, driver);
}
@Test(priority = 2)
public void Add_Edit_Selection() {
clickLinkByHref("/rsa/5/15/staff/n/i/list", driver);
}
@Test(priority = 3)
public void Add_Button() {
clickWhenReady("/html/body/div[2]/div[2]/div/div[2]/form/div[2]/div/div/a", 10, driver);
}
@Test(priority = 4)
public void Radio_Button_AMW() {
WebElement amw_radio = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(
By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[1]/div/div/label[1]")));
amw_radio.click();
}
@Test(priority = 5)
public void Radio_Button_service_provider() {
WebElement service_provider = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(
By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[2]/div/div/label[1]")));
service_provider.click();
}
@Test(priority = 6)
public void Service_Provider_Name_select() {
WebElement Service_Provider_DD = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(
By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[3]/div/div/a")));
Service_Provider_DD.click();
driver.findElement(By.cssSelector("ul > li:nth-child(2)")).click();
}
@Test(priority = 7)
public void Employee_Code_Enter() {
driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[5]/div/input"))
.sendKeys("01112");
}
@Test(priority = 8)
public void Click_Salutation() {
WebElement Salutation_DD = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(
By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[6]/div/div/a")));
Salutation_DD.click();
}
@Test(priority = 9)
public void Salutation_Click() {
driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[6]/div/div/div/ul/li[5]"))
.click();
}
@Test(priority = 10)
public void employee_name() {
WebElement empname = driver
.findElement(By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[7]/div/input"));
empname.sendKeys("Test2");
}
@Test(priority = 11)
public void Sap_plant_code() {
WebElement plant_code = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(
By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[8]/div/div/a")));
plant_code.click();
}
@Test(priority = 12)
public void sap_code_set() {
driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[8]/div/div/div/ul/li[3]"))
.click();
}
@Test(priority = 13)
public void sap_vendor_code() {
driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[9]/div/input"))
.sendKeys("test_2");
}
@Test(priority = 14)
public void employee_role_select() {
driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[10]/div/div/ul")).click();
}
@Test(priority = 15)
public void select_Technician_role() {
driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[10]/div/div/div/ul/li"))
.click();
}
@Test(priority = 16)
public void select_status() {
driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[11]/div/div/a")).click();
driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[1]/div[11]/div/div/div/ul/li[1]"))
.click();
}
@Test(priority = 17)
public void click_save_button() {
driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div[2]/form/div[2]/div/div/button[1]")).click();
}
@Test(priority = 18)
public void Record_add_notification_Check() {
if ((new WebDriverWait(driver, 10)).until(ExpectedConditions
.presenceOfElementLocated(By.xpath("/html/body/div[2]/div[3]/div/div/button"))) != null) {
driver.findElement(By.xpath("/html/body/div[2]/div[3]/div/div/button")).click();
} else {
infoBox("not Added", "Not Added");
}
}
public static void infoBox(String infoMessage, String titleBar) {
JOptionPane.showMessageDialog(null, infoMessage, "InfoBox: " + titleBar, JOptionPane.INFORMATION_MESSAGE);
}
public static void clickWhenReady(String location, int timeout, WebDriver driver) {
WebElement element = null;
WebDriverWait wait = new WebDriverWait(driver, timeout);
element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(location)));
element.click();
}
public static void clickLinkByHref(String href, WebDriver driver) {
List<WebElement> anchors = driver.findElements(By.tagName("a"));
Iterator<WebElement> i = anchors.iterator();
while (i.hasNext()) {
WebElement anchor = i.next();
if (anchor.getAttribute("href").contains(href)) {
anchor.click();
break;
}
}
}
}