Commit c80906c2 authored by Arsam Ali's avatar Arsam Ali

added 2 log files also add plugin feaeture on pom xml file

parent 1e5e29a0
......@@ -119,6 +119,19 @@
<version>20210307</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>21</source>
<target>21</target>
<compilerArgs>--enable-preview</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
<properties>
......
......@@ -5,5 +5,5 @@ Feature: Search and navigate to Nisum Technologies career page
When I search for "Nisum Technologies"
And I click on the first link of Nisum website
And I hover on the Global Careers button
And I click on the Pakistan Careers button
And I click on Contact us button
Then I should be redirected to the Pakistan careers page
......@@ -13,42 +13,30 @@ import java.time.Duration;
public class NisumPage {
WebDriver driver;
private static final Logger log = LogManager.getLogger(NisumPage.class);
public NisumPage(WebDriver driver) {
this.driver = driver;
log.info("NisumPage object created with WebDriver instance.");
}
private static final Logger log = LogManager.getLogger(NisumPage.class);
By searchBox = By.name("q");
// By nisumFirstLink = By.xpath("//a[@href='https://www.nisum.com/'][normalize-space()='Nisum | A Technology Consulting Partner']");
By nisumFirstLink = By.xpath("//a[@href='https://www.nisum.com/']//h3[@class='LC20lb MBeuO DKV0Md'][normalize-space()='Nisum | A Technology Consulting Partner']");
By globalCareersBtn = By.xpath("//span[@class='mega-drop-4 loaded']");
By pakistanCareersBtn = By.xpath("//li[@class='hs-menu-item hs-menu-depth-1 hs-item-has-children']//a[@role='menuitem'][normalize-space()='Pakistan']");
// Search for text
public void searchForText(String searchText) {
try {
log.info("Attempting to search for the term: " + searchText);
WebElement searchField = driver.findElement(searchBox);
searchField.sendKeys(searchText);
log.info("Search text '" + searchText + "' entered in search box.");
searchField.submit();
log.info("Search for '" + searchText + "' submitted.");
} catch (Exception e) {
//log.severe("Error occurred while attempting to search for '" + searchText + "': " + e.getMessage());
}
WebElement searchField = driver.findElement(searchBox);
searchField.sendKeys(searchText);
searchField.submit();
}
// Click on the first link
public void clickFirstLink() {
log.info("Attempting to click the first link for Nisum website.");
// log.error("locator is incorrect of nisum first link click //a[@href='https://www.nisum.com/'][normalize-space()='Nisum | A Technology Consulting Partner']");
WebElement firstLink = driver.findElement(nisumFirstLink);
firstLink.click();
log.info("Clicked on the first Nisum website link.");
}
// Hover over Global Careers button
public void hoverOverGlobalCareers() {
try {
log.info("Attempting to hover over the Global Careers button.");
......@@ -58,47 +46,13 @@ public class NisumPage {
// Hovering over the element
actions.moveToElement(globalCareers).perform();
log.info("Hovered over the Global Careers button.");
// log.info("Hovered over the Global Careers button.");
} catch (Exception e) {
// log.severe("Error occurred while attempting to hover over the Global Careers button: " + e.getMessage());
}
}
public void clickPakistanCareers() {
log.info("Attempting to click on the Pakistan Careers button.");
try {
// Wait for the element to be clickable
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(pakistanCareersBtn));
log.info("Element is clickable. Attempting to scroll into view.");
// Scroll the element into view using JavaScript
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
// Pause briefly to ensure scrolling is completed
Thread.sleep(500);
log.info("Attempting to click using JavaScript.");
// Click the element using JavaScript to avoid interception
((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);
log.info("Successfully clicked the Pakistan Careers button.");
} catch (ElementClickInterceptedException e) {
log.error("ElementClickInterceptedException occurred. Retrying with JavaScript click.", e);
// If element is intercepted by another element, retry with JavaScript click
WebElement element = driver.findElement(pakistanCareersBtn);
((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);
} catch (InterruptedException e) {
log.error("InterruptedException during scroll wait.", e);
Thread.currentThread().interrupt();
} catch (Exception e) {
log.error("An unexpected error occurred while clicking Pakistan Careers.", e);
}
public void clickContact() {
driver.findElement(By.xpath("//a[@class='cta_buttona btn-darka cta-primarya cta-gradient menu-trigger-cta ml-md-3 test']")).click();
}
}
......@@ -40,9 +40,9 @@ public class NisumSteps {
nisumPage.hoverOverGlobalCareers();
}
@When("I click on the Pakistan Careers button")
@When("I click on Contact us button")
public void iClickOnThePakistanCareersButton() {
nisumPage.clickPakistanCareers();
nisumPage.clickContact();
}
@Then("I should be redirected to the Pakistan careers page")
......
......@@ -7,7 +7,7 @@ import java.util.Map;
public class Main {
public static void main(String[] args) {
String logFilePath = "/Users/arsamali/Documents/IdeaProjects/POC-Arsam/src/main/resources/log4j2.log";
String logFilePath = "/Users/arsamali/Documents/IdeaProjects/POC-Arsam/src/main/resources/log4j2-error.log";
LogParser logParser = new LogParser();
List<String> errorLogs = logParser.extractErrors(logFilePath);
......
17:45:30.253 [main] INFO - NisumPage object created with WebDriver instance.
17:45:30.259 [main] INFO - Attempting to search for the term: Nisum Technologies
17:45:30.445 [main] INFO - Search text 'Nisum Technologies' entered in search box.
17:45:30.672 [main] INFO - Search for 'Nisum Technologies' submitted.
17:45:30.673 [main] INFO - Attempting to click the first link for Nisum website.
17:45:36.936 [main] INFO - Clicked on the first Nisum website link.
17:45:36.936 [main] INFO - Attempting to hover over the Global Careers button.
17:45:37.129 [main] INFO - Hovered over the Global Careers button.
17:45:37.129 [main] INFO - Attempting to click on the Pakistan Careers button.
17:45:47.633 [main] ERROR - An unexpected error occurred while clicking Pakistan Careers.
org.openqa.selenium.TimeoutException: Expected condition failed: waiting for element to be clickable: By.xpath: //li[@class='hs-menu-item hs-menu-depth-1 hs-item-has-children']//a[@role='menuitem'][normalize-space()='Pakistan'] (tried for 10 second(s) with 500 milliseconds interval)
Build info: version: '4.25.0', revision: '8a8aea2337'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '14.4', java.version: '18.0.2'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 129.0.6668.100, chrome: {chromedriverVersion: 129.0.6668.91 (b00bc8b76d60..., userDataDir: /var/folders/5j/_8d3sdx5099...}, fedcm:accounts: true, goog:chromeOptions: {debuggerAddress: localhost:63945}, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: mac, proxy: Proxy(), se:cdp: ws://localhost:63945/devtoo..., se:cdpVersion: 129.0.6668.100, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:extension:minPinLength: true, webauthn:extension:prf: true, webauthn:virtualAuthenticators: true}
Session ID: 834e5df5b9058b633a2f058bc3cb87f7
at org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:84) ~[selenium-support-4.25.0.jar:?]
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:228) ~[selenium-support-4.25.0.jar:?]
at org.example.NisumSearchPage.NisumPage.clickPakistanCareers(NisumPage.java:73) [classes/:?]
at org.example.NisumSearchSteps.NisumSteps.iClickOnThePakistanCareersButton(NisumSteps.java:45) [classes/:?]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[?:?]
at io.cucumber.java.Invoker.doInvoke(Invoker.java:66) [cucumber-java-7.11.0.jar:7.11.0]
at io.cucumber.java.Invoker.invoke(Invoker.java:24) [cucumber-java-7.11.0.jar:7.11.0]
at io.cucumber.java.AbstractGlueDefinition.invokeMethod(AbstractGlueDefinition.java:47) [cucumber-java-7.11.0.jar:7.11.0]
at io.cucumber.java.JavaStepDefinition.execute(JavaStepDefinition.java:29) [cucumber-java-7.11.0.jar:7.11.0]
at io.cucumber.core.runner.CoreStepDefinition.execute(CoreStepDefinition.java:66) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runner.PickleStepDefinitionMatch.runStep(PickleStepDefinitionMatch.java:63) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runner.ExecutionMode$1.execute(ExecutionMode.java:10) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runner.TestStep.executeStep(TestStep.java:84) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runner.TestStep.run(TestStep.java:56) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runner.PickleStepTestStep.run(PickleStepTestStep.java:51) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runner.TestCase.run(TestCase.java:84) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runner.Runner.runPickle(Runner.java:75) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runtime.Runtime.lambda$executePickle$6(Runtime.java:132) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runtime.CucumberExecutionContext.lambda$runTestCase$5(CucumberExecutionContext.java:130) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runtime.RethrowingThrowableCollector.executeAndThrow(RethrowingThrowableCollector.java:23) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runtime.CucumberExecutionContext.runTestCase(CucumberExecutionContext.java:130) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runtime.Runtime.lambda$executePickle$7(Runtime.java:132) [cucumber-core-7.11.0.jar:7.11.0]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
at io.cucumber.core.runtime.Runtime$SameThreadExecutorService.execute(Runtime.java:253) [cucumber-core-7.11.0.jar:7.11.0]
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123) [?:?]
at io.cucumber.core.runtime.Runtime.lambda$runFeatures$3(Runtime.java:114) [cucumber-core-7.11.0.jar:7.11.0]
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) [?:?]
at java.base/java.util.stream.SliceOps$1$1.accept(SliceOps.java:200) [?:?]
at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) [?:?]
at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) [?:?]
at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) [?:?]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) [?:?]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) [?:?]
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) [?:?]
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) [?:?]
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) [?:?]
at io.cucumber.core.runtime.Runtime.runFeatures(Runtime.java:115) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runtime.Runtime.lambda$run$0(Runtime.java:84) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runtime.Runtime.execute(Runtime.java:99) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.runtime.Runtime.run(Runtime.java:82) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.cli.Main.run(Main.java:87) [cucumber-core-7.11.0.jar:7.11.0]
at io.cucumber.core.cli.Main.main(Main.java:30) [cucumber-core-7.11.0.jar:7.11.0]
......@@ -3,7 +3,7 @@
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level - %msg%n"/>
</Console>
<File name="File" fileName="/Users/arsamali/Documents/IdeaProjects/POC-Arsam/src/main/resources/log4j2.log" append="false">
<File name="File" fileName="/Users/arsamali/Documents/IdeaProjects/POC-Arsam/src/main/resources/log4j4-error.log" append="false">
<PatternLayout>
<Pattern>%d{HH:mm:ss.SSS} [%t] %-5level - %msg%n</Pattern>
</PatternLayout>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment