0
votes

Error Message in console is as below.

Getting below error when trying to click on the button in child window.

org.openqa.selenium.NoSuchElementException: no such element (Session info: chrome=40.0.2214.111) (Driver info: chromedriver=2.9.248315, platform=Windows NT 6.1 SP1 x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 30.05 seconds For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:03:00' System info: host: 'AS-Ramesh', ip: '*******', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_17' Session ID: 0e85209c610382395e8dee65a9766bd2 Driver info: org.openqa.selenium.chrome.ChromeDriver Capabilities [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=C:\Users\rameshp\AppData\Local\Temp\scoped_dir27484_24934}, rotatable=false, locationContextEnabled=true, version=40.0.2214.111, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, webStorageEnabled=true, nativeEvents=true, applicationCacheEnabled=false, takesScreenshot=true}] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352) at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:449) at org.openqa.selenium.By$ByXPath.findElement(By.java:357) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344) at FEPModule.FEPLogin.Login_Main(FEPLogin.java:176) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84) at org.testng.internal.Invoker.invokeMethod(Invoker.java:714) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) at org.testng.TestRunner.privateRun(TestRunner.java:767) at org.testng.TestRunner.run(TestRunner.java:617) at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) at org.testng.SuiteRunner.run(SuiteRunner.java:240) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224) at org.testng.TestNG.runSuitesLocally(TestNG.java:1149) at org.testng.TestNG.run(TestNG.java:1057) at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)

The code is as below

public class FELogin {
private WebDriver driver;
private String url, myuserName, myPassword, LoginUsernamelink, LoginPasswordlink, LoginOklink, OpenFEModulelink;    

@BeforeTest
  public void setUp() throws Exception {        
    //get values from OR.Properties file
     FileInputStream conf=new FileInputStream("C:\\eclipse new selenium\\Proj\\Config\\OR.Properties");
     Properties p=new Properties();
     p.load(conf);   
     Thread.sleep(1000);
     url=p.getProperty("testSiteName");
     Thread.sleep(1000);         
     myuserName=p.getProperty("myusername_link");
     myPassword=p.getProperty("mypassword_link");
     LoginUsernamelink=p.getProperty("LoginUsername_link");
     LoginPasswordlink=p.getProperty("LoginPassword_link");
     LoginOklink=p.getProperty("LoginOk_link");
     OpenFEModulelink=p.getProperty("OpenFEModule_link");

     //Chrome Driver Configuration
     System.setProperty("webdriver.chrome.driver", "C:\\Selenium JARs\\chromedriver.exe");
     ChromeOptions options = new ChromeOptions();
     options.addArguments("--disable-extensions");
     driver = new ChromeDriver(options);         
      driver.get(url);
      driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

      //maximize chrome window
      driver.manage().window().maximize();
      Thread.sleep(1000);        
  }
@Test
public void Login_Main() throws InterruptedException {   

  //Enter username
  driver.findElement(ById.xpath(LoginUsernamelink)).clear();
  driver.findElement(ById.xpath(LoginUsernamelink)).sendKeys("user");
  Thread.sleep(1000);
  //Enter password
  driver.findElement(ById.xpath(LoginPasswordlink)).clear();
  driver.findElement(ById.xpath(LoginPasswordlink)).sendKeys("New@123");
  Thread.sleep(1000);
  //login to website
  driver.findElement(ById.xpath(LoginOklink)).click();
  Thread.sleep(6000); 
  driver.switchTo().frame(0);
  Thread.sleep(1000);

  driver.findElement(ById.cssSelector(OpenFEModulelink)).click();
  Thread.sleep(3000);     

  String ParentWindow = driver.getWindowHandle();
  Thread.sleep(200);
    for(String childHandle: driver.getWindowHandles()){
        Thread.sleep(100);
        driver.switchTo().window(childHandle);
    Thread.sleep(100);              
    }

//the below code for login to child window

  Thread.sleep(1000);
  //enter user name
  driver.findElement(By.id("username")).sendKeys("user");
  Thread.sleep(1000);
  //enter password
  driver.findElement(By.id("password")).sendKeys("New@123");
  Thread.sleep(1000);
  //login to website
  driver.findElement(By.name("submit")).click();
  Thread.sleep(3000);    
  driver.manage().window().maximize();
  Thread.sleep(5000);        

//------upto here working fine-------------

  //click on search button in child window 

  //----The below code is not working for me---getting exception(no such element)
  driver.findElement(ById.xpath(".//*[@id='zT7Tg3']")).click();
  Thread.sleep(1000);

}
1
share the HTML of the element you are trying to click, then we can help youddavison
Same ques by same user with different title and tags? Why?QuesVivek Singh

1 Answers

0
votes

HTML source might help me better to analyze. However, you can also debug the code by using getpagesource() function after switching to particular frame or window to check if it's properly switching to the page and see if the element is available in the page you are switching to.