Selenium Web Driver in IE - Control is passing to childwindow from parent window but unable to locate the elements

后端 未结 1 1918
遇见更好的自我
遇见更好的自我 2020-12-12 07:52

enter link description hereI am very new to selenium web driver. I am automating an application where after clicking a link, a popup window opens up and the rest of the oper

相关标签:
1条回答
  • 2020-12-12 08:13

    A few words regarding the solution:

    1. Keep your imports minimal.
    2. Refrain from using unwanted imports import com.thoughtworks.selenium.webdriven.commands.Click;
    3. Review your code & remove unwanted code driver.findElement(By.id("overridelink")).click();
    4. Avoid using Thread.sleep(6000);
    5. Once you induce implicitlyWait its valid throughout your execution.
    6. Use css if your xpath looks vulnerable By.xpath("//Image[@title = 'SEARCH HTTPS']")
    7. Here is your own working code with a few simple tweaks which print text IM sent on the console at the end:

      System.setProperty("webdriver.ie.driver", "C:\\your_directory\\IEDriverServer.exe");
      WebDriver driver = new InternetExplorerDriver();
      driver.manage().window().maximize();
      driver.get("https://194.74.171.122/e-ServiceDesk/frmLogin.aspx?ReturnUrl=/e-ServiceDesk/default.aspx");
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      String window_title1 = driver.getTitle();
      if (driver.getTitle().equalsIgnoreCase(window_title1))
      {
          driver.findElement(By.id("txtUserName")).clear();
          driver.findElement(By.id("txtUserName")).sendKeys("RSen");
          driver.findElement(By.id("btnLogin")).click();
          Thread.sleep(6000);
      }
      String window_title2 = driver.getTitle();
      if (driver.getTitle().equalsIgnoreCase(window_title2))
      {
          Boolean a = driver.findElement(By.xpath("//Image[@title = 'SEARCH HTTPS']")).isDisplayed() ;
          System.out.println(a);
          String MainWindow = driver.getWindowHandle();
          driver.findElement(By.xpath("//Image[@title = 'SEARCH HTTPS']")).click();
          driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
          Set<String> s1=driver.getWindowHandles();
          Iterator<String> i1=s1.iterator();
          while(i1.hasNext())         
              {       
                  String ChildWindow=i1.next();
                  if(!MainWindow.equalsIgnoreCase(ChildWindow))           
                  {           
                          driver.switchTo().window(ChildWindow);        
                          driver.manage().window().maximize();
                          Thread.sleep(10000);
                          String c = driver.getTitle();
                          System.out.println(c);  
                          Thread.sleep(5000);
                          driver.switchTo().frame("eFormContents");
                          Thread.sleep(3000);
                          driver.findElement(By.id("existCallRef")).click();
                          driver.findElement(By.id("existCallRef")).sendKeys("IM");
                          System.out.println("text IM sent");
                  }
              }   
      }
      

    Let me know if this helps you.

    0 讨论(0)
提交回复
热议问题