/** * Used whenever a player exits from the game. The most recent information stored for the player * will be saved into the database and any ties with the server will be removed as well. */ public void removePlayerData() { if (activeObjects.containsKey(Lobby.class)) { LobbyManager.getInstance().removeUser(getActiveObject(Lobby.class), player.getID()); } try { player.getSaveTimer().finish(); PlayerDAO.updateLogout(player.getID()); } catch (SQLException ex) { Log.println_e(ex.getMessage()); } GameServer.getInstance().removeActivePlayer(player.getID()); ResponseExitGame responseExitGame = new ResponseExitGame(); responseExitGame.setUserID(player.getID()); NetworkManager.addResponseForAllOnlinePlayers(player.getID(), responseExitGame); ResponseChat responseChat = new ResponseChat(); responseChat.setMessage("[" + player.getUsername() + "] has logged off."); NetworkManager.addResponseForAllOnlinePlayers(player.getID(), responseChat); ResponseGetPlayers responsePlayers = new ResponseGetPlayers(); responsePlayers.setPlayers(GameServer.getInstance().getActivePlayers()); NetworkManager.addResponseForAllOnlinePlayers(player.getID(), responsePlayers); Log.printf("User '%s' has logged off.", player.getUsername()); }
public static void waitFor(String object, String data) throws Exception { try { Log.info("Wait for 5 seconds"); Thread.sleep(5000); } catch (Exception e) { Log.error("Not able to Wait --- " + e.getMessage()); DriverScript.bResult = false; } }
public static void closeBrowser(String object, String data) { try { Log.info("Closing the browser"); driver.quit(); } catch (Exception e) { Log.error("Not able to Close the Browser --- " + e.getMessage()); DriverScript.bResult = false; } }
public static void click(String object, String data) { try { Log.info("Clicking on Webelement " + object); driver.findElement(By.xpath(OR.getProperty(object))).click(); } catch (Exception e) { Log.error("Not able to click --- " + e.getMessage()); DriverScript.bResult = false; } }
public static void input(String object, String data) { try { Log.info("Entering the text in " + object); driver.findElement(By.xpath(OR.getProperty(object))).sendKeys(data); } catch (Exception e) { Log.error("Not able to Enter UserName --- " + e.getMessage()); DriverScript.bResult = false; } }
public static WebElement txtbx_UserName() throws Exception { try { element = driver.findElement(By.id("log")); Log.info("Username text box is found on the Login Page"); } catch (Exception e) { Log.error("UserName text box is not found on the Login Page"); throw (e); } return element; }
public static void navigate(String object, String data) { try { Log.info("Navigating to URL"); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.get(Constants.URL); } catch (Exception e) { Log.info("Not able to navigate --- " + e.getMessage()); DriverScript.bResult = false; } }
public static WebElement txtbx_Password() throws Exception { try { element = driver.findElement(By.id("pwd")); Log.info("Password text box is found on the Login page"); } catch (Exception e) { Log.error("Password text box is not found on the Login Page"); throw (e); } return element; }
public static WebElement btn_LogIn() throws Exception { try { element = driver.findElement(By.id("login")); Log.info("Submit button is found on the Login page"); } catch (Exception e) { Log.error("Submit button is not found on the Login Page"); throw (e); } return element; }
public static WebElement prospectList_saveProspect(WebDriver driver) throws Exception { WebDriverWait wait = new WebDriverWait(driver, 60); element = driver.findElement(By.xpath("//input[@value='Create prospect']")); element.click(); Log.info("Click on Save to Create New Prospect"); // wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(Constant.logOutXpath))); Log.info("Waiting for prospect page title to contain id"); wait.until(ExpectedConditions.urlContains("id")); return element; }
public static WebElement prospectList_AddProspectToList( WebDriver driver, String randomName, String emailID) throws Exception { WebDriverWait wait = new WebDriverWait(driver, 60); // Assumption - The newly created Prospect List is always on 1st Row wait.until( ExpectedConditions.textToBePresentInElementLocated( By.xpath(".//*[@id='prospect_row_a0']/td[3]/a"), emailID)); Log.info(driver.findElement(By.xpath(".//*[@id='prospect_row_a0']/td[3]/a")).getText()); Log.info( driver.findElement(By.xpath(".//*[@id='prospect_row_a0']/td[3]/a")).getAttribute("href")); String ProspectID = driver.findElement(By.xpath(".//*[@id='prospect_row_a0']/td[3]/a")).getAttribute("href"); Log.info(ProspectID); int endIndex = ProspectID.lastIndexOf("/"); int length = driver .findElement(By.xpath(".//*[@id='prospect_row_a0']/td[3]/a")) .getAttribute("href") .length(); System.out.println("endIndex is " + endIndex); String ActProspectID = ProspectID.substring(endIndex + 1); System.out.println("ActProspectID is " + ActProspectID); if (endIndex != -1) { if (!(ActProspectID.contains("#"))) { // ProspectID = driver.getCurrentUrl().substring(endIndex+1, length); Log.info("Prospect id doesn't contain # " + ProspectID); } } driver.get("https://pi.pardot.com/list/prospect/prospect_id/" + ActProspectID); wait.until( ExpectedConditions.visibilityOfElementLocated( By.xpath("//span[contains(.,'Select a list to add...')]"))); WebElement listDropDown = driver.findElement(By.xpath("//span[contains(.,'Select a list to add...')]")); listDropDown.click(); driver.findElement(By.xpath("//li[text()='" + randomName + "']")).click(); wait.until( ExpectedConditions.textToBePresentInElement(listDropDown, "Select a list to add...")); driver.findElement(By.xpath("//span[contains(.,'Select a list to add...')]")).submit(); return element; }
// Its time to close the finish the test case @AfterMethod public void afterMethod() { // Printing beautiful logs to end the test case Log.endTestCase(sTestCaseName); // Closing the opened driver driver.close(); }
public static WebElement prospectList_fillFormList(WebDriver driver, String emailID) throws Exception { // Wait for the Add New Prospect form to load WebDriverWait wait = new WebDriverWait(driver, 60); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@id='email']"))); Log.info("Waiting for Prospect->List->AddProspect New form"); // Fill out Add New Prospect Form element = driver.findElement(By.xpath("//input[@id='email']")); element.sendKeys(emailID); Log.info("--- Filling AddProspect form ---- "); // Select a campaign option Log.info("Filling AddProspect form Selecting Campaign"); Select campaignDropdown = new Select(driver.findElement(By.xpath("//select[@id='campaign_id']"))); List<WebElement> campaignWeblist = campaignDropdown.getOptions(); int cCnt = campaignWeblist.size(); Log.info("Total campaignWeblist is " + cCnt); Random cnum = new Random(); int cSelect = cnum.nextInt(cCnt); campaignDropdown.selectByIndex(cSelect); Log.info("Selected campaignWeblist " + cSelect); Thread.sleep(10); // Select a profile option Select profileDropdown = new Select(driver.findElement(By.xpath("//select[@id='profile_id']"))); List<WebElement> profileWeblist = profileDropdown.getOptions(); int pCnt = profileWeblist.size(); Log.info("Total profileWeblist is " + pCnt); Random pnum = new Random(); int pSelect = pnum.nextInt(pCnt); profileDropdown.selectByIndex(pSelect); Log.info("Selected profileWeblist " + pSelect); Thread.sleep(10); // Clear and Enter a Score Value element = driver.findElement(By.xpath("//input[@id='score']")); element.clear(); element = driver.findElement(By.xpath("//input[@id='score']")); element.sendKeys(Constant.scoreVal); ; Log.info("Enter Score Value " + Constant.scoreVal); // wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//h1[contains(.,'*****@*****.**')]"))); return element; }
@AfterClass public void afterClass() throws Exception { // Printing logs to end the test case Log.endTestCase(sTestCaseName); // Closing the opened driver driver.close(); // Closing the opened excel file ExcelUtils.closeExcelFile(); }
@BeforeClass public void setUp() throws Exception { // Configuring Log4j logs. new BaseClass(); DOMConfigurator.configure(BaseClass.bLog); // Setting Excel File -- Test Data xls File ExcelUtils.setExcelFile( Constant.Path_TestData + Constant.File_TestData, Constant.File_TestappNameSheet); // Getting the Test Case name, as it will going to use in so many places // The main use is to get the TestCase row from the Test Data Excel sheet sTestCaseName = this.toString(); Log.info(sTestCaseName); sTestCaseName = Utils.getTestCaseName(this.toString()); Log.info(sTestCaseName); Log.startTestCase(sTestCaseName); testStep = new HelperFunction(); }
public static WebElement prospectList_AddClickList(WebDriver driver) throws Exception { WebDriverWait wait = new WebDriverWait(driver, 60); // Wait for Prospect->List page to load and click on Add New Prospect wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(Constant.pListCreateXpath))); element = driver.findElement(By.xpath(Constant.pListCreateXpath)); element.click(); Log.info("Clicking on Prospect->List->AddProspect Link"); return element; }
public static void openBrowser(String object, String data) { Log.info("Opening Browser"); try { if (data.equals("Mozilla")) { driver = new FirefoxDriver(); Log.info("Mozilla browser started"); } else if (data.equals("IE")) { // Dummy Code, Implement you own code driver = new InternetExplorerDriver(); Log.info("IE browser started"); } else if (data.equals("Chrome")) { // Dummy Code, Implement you own code driver = new ChromeDriver(); Log.info("Chrome browser started"); } int implicitWaitTime = (10); driver.manage().timeouts().implicitlyWait(implicitWaitTime, TimeUnit.SECONDS); } catch (Exception e) { Log.info("Not able to open the Browser --- " + e.getMessage()); DriverScript.bResult = false; } }
public static WebElement prospectList(WebDriver driver) throws Exception { // WebElement pHoverLink = driver.findElement(By.xpath(Constant.pXpath)); element = driver.findElement(By.xpath(Constant.pXpath)); Actions actions = new Actions(driver); WebDriverWait wait = new WebDriverWait(driver, 60); Log.info("Initializing Actions"); // actions.moveToElement(pHoverLink).perform(); actions.moveToElement(element).perform(); Log.info("Menu Prospect Hover Link"); // Hover over Prospect menu and click on Prospect->List // WebElement moveonMenu = driver.findElement(By.xpath(mXpath)); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(Constant.pListXpath))); // actions.moveToElement(submenuHoverLink).moveToElement(driver.findElement(By.xpath(msListXpath))).click().perform(); element = driver.findElement(By.xpath(Constant.pListXpath)); element.click(); Log.info("Menu Prospect->List Hover Link"); return element; }
// Following TestNg Test case pattern, and divided a Test case in to three different part. // In Before Method, your code will always be the same for every other test case. // In other way before method is your prerequisites of your main Test Case @BeforeMethod public void beforeMethod() throws Exception { // Configuring Log4j logs, please see the following posts to learn about Log4j Logging // http://www.toolsqa.com/test-case-with-log4j/ // http://www.toolsqa.com/log4j-logging/ DOMConfigurator.configure("log4j.xml"); // Getting the Test Case name, as it will going to use in so many places // The main use is to get the TestCase row from the Test Data Excel sheet sTestCaseName = this.toString(); // From above method we get long test case name including package and class name etc. // The below method will refine your test case name, exactly the name use have used sTestCaseName = Utils.getTestCaseName(this.toString()); // Start printing the logs and printing the Test Case name Log.startTestCase(sTestCaseName); // Setting up the Test Data Excel file using Constants variables // For Constant Variables please see http://www.toolsqa.com/constant-variables/ // For setting up Excel for Data driven testing, please see // http://www.toolsqa.com/data-driven-testing-excel-poi/ ExcelUtils.setExcelFile(Constant.Path_TestData + Constant.File_TestData, "Sheet1"); // Fetching the Test Case row number from the Test Data Sheet // This row number will be feed to so many functions, to get the relevant data from the Test // Data sheet iTestCaseRow = ExcelUtils.getRowContains(sTestCaseName, Constant.Col_TestCaseName); // Launching the browser, this will take the Browser Type from Test Data Sheet driver = Utils.OpenBrowser(iTestCaseRow); // Initializing the Base Class for Selenium driver // Now we do need to provide the Selenium driver to any of the Page classes or Module Actions // Will soon write a post on Base Class new BaseClass(driver); }
@Test(dataProvider = "getXlsData") public void testUserRegistration( String SrNo, String TestCaseName, String FirstName, String LastName, String CitizenId, String DOB, String ZipCode, String Email, String ConfirmEmail, String MobileNumber, String NeedToExecute, String Result, String Comments) throws Exception { try { flag = false; // Fatching Test Data from the Test Data file and store into the array [] object. Log.info("Fatching Test Data from the Test Data file and store into the array [] object."); rowIndex = Integer.parseInt(SrNo); rowData = ExcelUtils.getXlsRowData(rowIndex, Constant.Total_Col_MetLifeGSSP); // Checking if test case need to be executed or not Log.info( "Value of rowData[Constant.Col_MetLifeGSSP_NeedToExecute] -->" + rowData[Constant.Col_MetLifeGSSP_NeedToExecute] + "--" + NeedToExecute); System.out.println("No -->" + SrNo); if (NeedToExecute.equalsIgnoreCase("Yes")) { // Init the Webdriver with Opening the browser and URL Log.info("Webdriver init and Opening the test application"); driver = Utils.OpenBrowser(Constant.appName); Log.info("Webdriver initilazied and test application open"); // Developing the Test Step into the Modules and based on the result we verify that the step // is pass or not. // TestBase.Assert() Function is used for assertion and this will stop the execution if // assert is fail. // TestBase.verifyAssert() Function is used for assertion verification but it will not stop // the execution and after capturing the error it continue the execution. // If function() return true then the execution will move to next step of the test case step // otherwise it fail and stop the execution. // Test Step 1 Log.info("Execution Test Step -->openRegistrationLink"); flag = testStep.openRegistrationLink(driver, rowIndex, sTestCaseName, rowData); Log.info("Test Step openRegistrationLink result -- >" + flag); TestBase.verifyTrue(flag); // Test Step 2 if (flag) { Log.info("Execution Test Step -->registrationCustomer"); flag = testStep.registrationCustomer(driver, rowIndex, sTestCaseName, rowData); Log.info("Test Step registrationCustomer result -- >" + flag); TestBase.verifyTrue(flag); } // Test Step 3 if (flag) { Log.info("Execution Test Step -->verifyCaptcha"); flag = testStep.verifyCaptcha(driver, rowIndex, sTestCaseName, rowData); Log.info("Test Step verifyCaptcha result -- >" + flag); TestBase.verifyTrue(flag); } // Test Step 3 if (flag) { Log.info("Execution Test Step -->verifyRegistration"); flag = testStep.verifyRegistration(driver, rowIndex, sTestCaseName, rowData); Log.info("Test Step verifyRegistration result -- >" + flag); TestBase.verifyTrue(flag); } Log.info("Final Result of the test case -->" + sTestCaseName + "-->" + flag); // Printing the result of the test case in the excel Result Column and TestNG report. if (flag) { ExcelUtils.setExcelFile( Constant.Path_TestData + Constant.File_TestData, Constant.File_TestappNameSheet); ExcelUtils.setCellData( "Pass", rowIndex, Constant.Col_MetLifeGSSP_Result, Constant.Path_TestData + Constant.File_TestData, Constant.File_TestappNameSheet); ExcelUtils.setCellData( "Test Case executed successfully.", rowIndex, Constant.Col_MetLifeGSSP_Comments, Constant.Path_TestData + Constant.File_TestData, Constant.File_TestappNameSheet); Reporter.log(sTestCaseName + " Test Case Pass"); } else { throw new Exception("Test Case Failed because of Verification"); } } // If Test Case need not to be executed. else { Log.info("Test Case need not to be executed"); // Writing comment on the test data file why this case is skipped from the execution. ExcelUtils.setExcelFile( Constant.Path_TestData + Constant.File_TestData, Constant.File_TestappNameSheet); ExcelUtils.setCellData( "Skip", rowIndex, Constant.Col_MetLifeGSSP_Result, Constant.Path_TestData + Constant.File_TestData, Constant.File_TestappNameSheet); ExcelUtils.setCellData( "Need To Execute Request is selected as No", rowIndex, Constant.Col_MetLifeGSSP_Comments, Constant.Path_TestData + Constant.File_TestData, Constant.File_TestappNameSheet); throw new SkipException("Skiping This Test as 'Need To Execute' Request is selected as No"); } } catch (SkipException e) { throw (e); } }
// This is the starting of the Main Test Case @Test public void main() throws Throwable { // Every exception thrown from any class or method, will be catch here and will be taken care // off // For Exception handling please see // http://www.toolsqa.com/selenium-webdriver/exception-handling-selenium-webdriver/ try { // Here we are calling the SignIN Action and passing argument (iTestCaseRow) // This is called Modularization, when we club series of actions in to one Module // For Modular Driven Framework, please see http://www.toolsqa.com/modular-driven/ SignIn_Action.Execute(iTestCaseRow); // This action is to select the Product category from the Top Navigation of the Home Page // I have converted this in to a module, as there are so many logics involved in to this // selection // And it is always a best idea to keep your logics separate from your test case ProductSelect_Action.productType(iTestCaseRow); // This action is to select the Product from the Product Listing Page // I have again converted this in to a module, as there are so many logics involved in to this // selection ProductSelect_Action.productNumber(iTestCaseRow); // This is to assigning Product Name & Price to the variables from the Check Out page, so that // it can be matched later for verification CheckOut_Action.Execute(); // Here we are calling the Payment Details Action and passing argument (iTestCaseRow) // This action will provide all the personal detail and payment detail on the page and // complete the payment for the selected product PaymentDetails_Action.execute(iTestCaseRow); // This is to assigning Product Name & Price to the variables from the Confirmation page, so // that it can be matched later for verification Confirmation_Action.Execute(); // This is to match the Product Name & Price we have stored in variables of Checkout & // Confirmation page Verification_Action.Execute(); // Now your test is about to finish but before that you need to take decision to Pass your // test or Fail // For selenium your test is pass, as you do not face any exception and you come to the end or // you test did not stop anywhere // But for you it can be fail, if any of your verification is failed // This is to check that if any of your verification during the execution is failed if (BaseClass.bResult == true) { // If the value of boolean variable is True, then your test is complete pass and do this ExcelUtils.setCellData("Pass", iTestCaseRow, Constant.Col_Result); } else { // If the value of boolean variable is False, then your test is fail, and you like to report // it accordingly // This is to throw exception in case of fail test, this exception will be caught by catch // block below throw new Exception("Test Case Failed because of Verification"); } // Below are the steps you may like to perform in case of failed test or any exception faced // before ending your test } catch (Exception e) { // If in case you got any exception during the test, it will mark your test as Fail in the // test result sheet ExcelUtils.setCellData("Fail", iTestCaseRow, Constant.Col_Result); // If the exception is in between the test, bcoz of any element not found or anything, this // will take a screen shot Utils.takeScreenshot(driver, sTestCaseName); // This will print the error log message Log.error(e.getMessage()); // Again throwing the exception to fail the test completely in the TestNG results throw (e); } }
/** * Holds the main loop that processes incoming requests by first identifying its type, then * interpret the following data in each determined request class. Queued up responses created from * each request class will be sent after the request is finished processing. * * <p>The loop exits whenever the isPlaying flag is set to false. One of these occurrences is * triggered by a timeout. A timeout occurs whenever no activity is picked up from the client such * as being disconnected. */ @Override public void run() { long lastActivity = System.currentTimeMillis(); short requestCode = -1; while (!isDone) { try { // Extract the size of the package from the data stream short requestLength = DataReader.readShort(dataInputStream); if (requestLength > 0) { lastActivity = System.currentTimeMillis(); // Separate the remaining package from the data stream byte[] buffer = new byte[requestLength]; inputStream.read(buffer, 0, requestLength); DataInputStream dataInput = new DataInputStream(new ByteArrayInputStream(buffer)); // Extract the request code number requestCode = DataReader.readShort(dataInput); // Determine the type of request GameRequest request = GameRequestTable.get(requestCode); // If the request exists, process like following: if (request != null) { request.setGameClient(this); // Pass input stream to the request object request.setDataInputStream(dataInput); // Parse the input stream request.parse(); // Interpret the data request.doBusiness(); try { // Retrieve any responses created by the request object for (GameResponse response : request.getResponses()) { // Transform the response into bytes and pass it into the output stream send(response); } } catch (IOException ex) { Log.printf_e("Client %s connection lost", session_id); isDone = true; } } } else { // If there was no activity for the last moments, exit loop if ((System.currentTimeMillis() - lastActivity) / 1000 >= Constants.TIMEOUT_SECONDS) { isDone = true; } } } catch (Exception ex) { Log.printf_e("Request [%d] Error:", requestCode); Log.println_e(ex.getMessage()); Log.println_e("---"); ex.printStackTrace(); } } if (player != null) { removePlayerData(); } // Remove this GameClient from the server GameServer.getInstance().deletePlayerThreadOutOfActiveThreads(session_id); Log.printf("Client %s has ended", session_id); }