/ ****如何在同一浏览器实例中执行用两个不同类编写的不同测试用例? 我正在开发基本的混合框架(带有PFM的POM)。在此框架中,我编写了两个页面类1. Loginpage 2.HomePage和两个测试类1.LoginTest 2. HomePageTest。在LoginTest中,我通过使用excel表格提供数据来验证登录测试用例,它工作得很好。在HomePageTest类中,我想在登录后验证搜索功能。
查询:1.登录后如何使用HomePageTest类中的Login方法(用Loginpage类编写)进行搜索? 2.我知道有多种方法可以在HomePageTest类中调用登录方法,但是最好的方法是什么? 3.是否可以在不关闭并重新打开浏览器的情况下执行用两个不同类编写的两个测试用例?如果是,那么如何?**** /
这是我的代码:BaseClass:
package basePackage;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.ITestResult;
import org.testng.Reporter;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;
public class BaseClass {
public static WebDriver driver;
@BeforeMethod
@Parameters({"browser", "baseUrl"})
//@BeforeClass
public static void intitialization(String browserName, String url)
{
if (browserName.equalsIgnoreCase("chrome"))
{
System.setProperty("webdriver.chrome.driver", "/home/ambrish/Lockdown_Tets/SeleniumPractice/drivers/chromedriver");
driver= new ChromeDriver();
Reporter.log("Chrome Launched", true);
}
else if(browserName.equalsIgnoreCase("FireFox"))
{
System.setProperty("webdriver.gecko.driver","/home/ambrish/Lockdown_Tets/SeleniumPractice/drivers/geckodriver");
driver= new FirefoxDriver();
Reporter.log("Firefox Launched", true);
}
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.get(url);
Reporter.log(url+ "url navigated", true);
}
@AfterMethod
public void tearDown(ITestResult result)
{
String scriptName = result.getMethod().getMethodName();
if (result.isSuccess()) //true---> script pass
{
Reporter.log(scriptName+ "script is passed :)", true);
}
else //false----> script failed
{
ScreenshotLib slib = new ScreenshotLib(driver);
slib.takescreenshot(scriptName);
Reporter.log("screenshot has been taken", true);
}
driver.close();
Reporter.log("Browser closed", true);
}
}
LoginPageClass:
package pageObject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.testng.Assert;
import org.testng.Reporter;
import basePackage.BaseClass;
public class LoginPage extends BaseClass {
@FindBy(xpath="//a[contains(text(),'Login & Signup')]")
private WebElement LoginLink;
@FindBy(xpath="(//form/div/input[@type='text'])")
private WebElement UnTxBx;
@FindBy(xpath="//input[@type='password']")
private WebElement PwdTxBx;
@FindBy(xpath="(//button[@type='submit'])[last()]")
private WebElement loginBtn;
@FindBy(xpath="//span[contains(text(),'Your username or password is incorrect')]")
private WebElement invalidLoginMsg;
//Intializing Page Object
public LoginPage()
{
PageFactory.initElements(driver, this);
}
public static void login(String username, String password)
{
UnTxBx.sendKeys(username);
PwdTxBx.sendKeys(password);
loginBtn.click();
}
}
HomePageClass:
package pageObject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import basePackage.BaseClass;
import basePackage.WaitStatementLib;
public class FKartHome extends BaseClass {
@FindBy(xpath="//input[@title='Search for products, brands and more']")
private WebElement SearchSendKeys;
@FindBy(xpath="//button[@type='submit']")
private WebElement ClickSubmit;
public FKartHome()
{
PageFactory.initElements(driver, this);
}
public static void search(String searchBook)
{
WaitStatementLib.eWaitForVisible(20, SearchSendKeys);
SearchSendKeys.sendKeys(searchBook);
ClickSubmit.click();
}
}
LoginPageTestClass:
package scriptTest;
import org.testng.annotations.Test;
import basePackage.BaseClass;
import basePackage.ExcelUtilities;
import pageObject.FKartHome;
import pageObject.LoginPage;
public class LoginPageTest extends BaseClass {
public static LoginPage loginPage;
@Test
public static void loginTest()
{
String filepath= "/home/ambrish/Lockdown_Tets/SeleniumPractice/TestDataSheet/testdata.xlsx";
String username = ExcelUtilities.readData(filepath, "sheet1", 1, 1);
String password = ExcelUtilities.readData(filepath, "sheet1", 1, 2);
loginPage = new LoginPage();
loginPage .login(username, password);
}
}
HomePageTestClass:
package scriptTest;
import org.testng.annotations.Test;
import basePackage.BaseClass;
import pageObject.FKartHome;
import pageObject.ItemsPage;
import pageObject.LoginPage;
public class FKartHomeTest extends BaseClass {
public static FKartHome fKartHome;
@Test
public void searchBook()
{
String searchBook= "Books";
fKartHome= new FKartHome();
fKartHome.search(searchBook);
}
}