how to click new tab in java script selenium

149 views Asked by At

My code opens new window (first one login window --> Main menu-->moudule-->Reports--> report name. Report name should be opened in next tab.

Issue : Report name is not opening in new tab ..its opening in new window.(blank window). IE expired within the org.So its redirect to Edge as per the code.(legacy app) We are not using driver folder separately. Java - JDK 1.8 selenium - 3.141.59 tool- intelij






   public void launchBrowser() throws IOException {
      String browser = properties.getProperty("Browser");
      if (browser.equalsIgnoreCase("chrome")) {
//       System.setProperty("webdriver.chrome.driver", "./Drivers/chromedriver.exe");

         System.setProperty("wdm.proxy",wdmProxy);
         System.setProperty("wdm.proxyUser", wdmProxyUser);
         System.setProperty("wdm.proxyPass", wdmProxyPwd);
         WebDriverManager.chromedriver().setup();
         genericSteps.driver = new ChromeDriver();
      } else if (browser.equalsIgnoreCase("ie")) {
//       System.setProperty("webdriver.ie.driver", "./drivers/IEDriverServer.exe");
         DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
         capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);

         System.setProperty("wdm.proxy",wdmProxy);
         System.setProperty("wdm.proxyUser", wdmProxyUser);
         System.setProperty("wdm.proxyPass", wdmProxyPwd);
         WebDriverManager.iedriver().setup();
         genericSteps.driver = new InternetExplorerDriver(capabilities);
         genericSteps.driver.manage().window().maximize();
         genericSteps.driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
         String test = properties.getProperty("URL");
         genericSteps.driver.get(test);
      }else if (browser.equalsIgnoreCase("edge")) {
//       System.setProperty("webdriver.ie.driver", "./Drivers/IEDriverServer.exe");
//       System.setProperty("webdriver.edge.driver", "./drivers/DriverServer.exe");

//       System.setProperty("webdriver.edge.driver", "C:\\Users\\-------\\app\\drivers\\msedgedriver.exe");
         EdgeOptions capabilities = new EdgeOptions();

         System.setProperty("wdm.proxy",wdmProxy);
         System.setProperty("wdm.proxyUser", wdmProxyUser);
         System.setProperty("wdm.proxyPass", wdmProxyPwd);
         WebDriverManager.edgedriver().setup();
         genericSteps.driver = new EdgeDriver(capabilities);
         genericSteps.driver.manage().window().maximize();
         genericSteps.driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
         genericSteps.driver.switchTo();
         String test = properties.getProperty("URL");
         genericSteps.driver.get(test);

      }
   }

   /* Explicit wait for the Webelement in the page to to be visible */
   public void explicitWait(WebElement element, int timeToWaitInSec) {
      WebDriverWait wait = new WebDriverWait(genericSteps.driver, timeToWaitInSec);
//    wait.until(ExpectedConditions.visibilityOf(element));
   }

   /* Explicit wait for the Webelement in the page to to be visible */
   public void expliciteWaitVisiblityOfWindows(int timeToWaitInSec) {
      WebDriverWait wait = new WebDriverWait(genericSteps.driver, timeToWaitInSec);
      wait.until(ExpectedConditions.numberOfWindowsToBe(2));
//    wait.until(ExpectedConditions.titleIs(pageTitle));
   }

   

    */

   public void clickByElement(WebElement element) throws IOException {
      explicitWait(element, 120);
      if (element.isDisplayed()) {
         element.click();
         waitForPageToLoad(90);
      }
   }



   public void clickByElementJavaScript(WebElement element) throws IOException {
      JavascriptExecutor executor = (JavascriptExecutor)genericSteps.driver;
      executor.executeScript("arguments[0].click();", element);
   }




   public void verifyTitle(String title) throws IOException {
      genericSteps.driver.getTitle();
   }

   public void explicitWait1(WebElement element, int timeToWaitInSec) {
      WebDriverWait wait = new WebDriverWait(genericSteps.driver, timeToWaitInSec);
      wait.ignoring(StaleElementReferenceException.class);
      wait.until(ExpectedConditions.elementToBeClickable(element));
   }



   public void mouseOverByElement(WebElement element) throws IOException {
      explicitWait(element, 1000);
      new Actions(genericSteps.driver).moveToElement(element).build().perform();
   }

   public void mouseOverToSelectElement(WebElement element, WebElement element1) throws IOException {
      explicitWait(element, 30);
      Actions action = new Actions(genericSteps.driver);
      action.moveToElement(element).moveToElement(element1).click().build().perform();

   }

   public void mouseOverToSelectElements(WebElement element, WebElement element1, WebElement element2) throws IOException, InterruptedException {
      waitForPageToLoad();
      Actions builder = new Actions(genericSteps.driver);
      builder.moveToElement(element).build().perform();
      Thread.sleep(5000);
      Actions action = new Actions(genericSteps.driver);
      action.moveToElement(element1).build().perform();
      JavascriptExecutor executor = (JavascriptExecutor) genericSteps.driver;
      executor.executeScript("arguments[0].click();", element2);
      Thread.sleep(5000);
   }

   /*
    * This method will switch window using page title
    *
    * @param get title of the page
    */

   public boolean switchToWindowByTitle(String title) throws Exception {
      ((JavascriptExecutor) genericSteps.driver).executeScript("window.focus();");
      ((JavascriptExecutor) genericSteps.driver).executeScript("window.focus();");
      Set<String> availableWindows = genericSteps.driver.getWindowHandles();
      System.out.println("HELLO");
      if (!availableWindows.isEmpty()) {
         for (String string : availableWindows) {
            System.out.println("HELLO" + genericSteps.driver.switchTo().window(string).getTitle());
            genericSteps.driver.manage().window().maximize();
            waitForPageToLoad();
         }

         for (String windowId : availableWindows) {
            String switchedWindowTitle = genericSteps.driver.switchTo().window(windowId).getTitle();
            waitForPageToLoad();
            if ((switchedWindowTitle.equals(title)) || (switchedWindowTitle.contains(title))) {
               System.out.println(switchedWindowTitle);
               return true;
            }
         }
         Thread.sleep(3000);
         waitForPageToLoad();
      }
      return false;
   }


   public void switchToWindowByTitleNew(String title) throws Exception {
      ((JavascriptExecutor) genericSteps.driver).executeScript("window.focus();");
      ((JavascriptExecutor) genericSteps.driver).executeScript("window.open();");

      Set<String> availableWindows = genericSteps.driver.getWindowHandles();
      System.out.println(availableWindows.toArray().length);
      if (!availableWindows.isEmpty()) {
         for (String string : availableWindows) {
            System.out.println("HELLO" + genericSteps.driver.switchTo().window(string).getTitle());
            genericSteps.driver.manage().window().maximize();
            genericSteps.driver.navigate();

            waitForPageToLoad();
         }

         for (String windowId : availableWindows) {
            String switchedWindowTitle = genericSteps.driver.switchTo().window(windowId).getTitle();
            waitForPageToLoad();
            if ((switchedWindowTitle.equals(title)) || (switchedWindowTitle.contains(title))) {
               System.out.println(switchedWindowTitle);
               return;
            }
         }
         Thread.sleep(3000);
         waitForPageToLoad();
      }
   }
//Mahi added

   public boolean switchToTabByTitleNew(String title) throws Exception {
      ((JavascriptExecutor) genericSteps.driver).executeScript("window.focus();");
      Set<String> availableTabs = genericSteps.driver.getWindowHandles();
      System.out.println(availableTabs.toArray().length);
      if (!availableTabs.isEmpty()) {
         for (String string : availableTabs) {
            System.out.println("HELLO" + genericSteps.driver.switchTo().window(string).getTitle());
            genericSteps.driver.manage().window().maximize();
            genericSteps.driver.navigate();

            waitForPageToLoad();
         }

         for (String windowId : availableTabs) {
            String switchedTabTitle = genericSteps.driver.switchTo().window(windowId).getTitle();
            waitForPageToLoad();
            if ((switchedTabTitle.equals(title)) || (switchedTabTitle.contains(title))) {
               System.out.println(switchedTabTitle);
               return true;
            }
         }
         Thread.sleep(3000);
         waitForPageToLoad();
      }
      return false;
   }

 public void handleSSLError() throws Exception {
      String title = genericSteps.gerDriver().getTitle();
      System.out.println("The value of title is "+ title);
      if(title.equalsIgnoreCase("This site isn’t secure"))
      {
         clickByElementJavaScript(genericSteps.gerDriver().findElement(By.id("overridelink")));
         waitForPageToLoad();
      }
   }



1

There are 1 answers

2
Tapas Mahato On

Can you try with:

Method 1:

  const cmdCtrl = platform.includes('darwin') ? Key.COMMAND : Key.CONTROL

  WebElement link = driver.findElement(By.id("link_element_id"));

  await driver.actions()
    .move({ origin: clickable })
    .pause(1000)
    .keyDown(cmdCtrl)
    .sendKeys(Key.ENTER)
    .keyUp(cmdCtrl)
    .perform()

Method 2:

  driver.findElement(By.linkText("urlLink")).sendKeys(Keys.chord(Keys.CONTROL,Keys.RETURN));