"org.openqa.selenium.NoSuchElementException:没有这样的元素"当我单击子窗口中的按钮时收到 [英] "org.openqa.selenium.NoSuchElementException: no such element" received when i click button in child window

查看:54
本文介绍了"org.openqa.selenium.NoSuchElementException:没有这样的元素"当我单击子窗口中的按钮时收到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试在子窗口中单击按钮时出现以下错误.

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

org.openqa.selenium.NoSuchElementException:没有这样的元素 (会议信息:chrome = 40.0.2214.111) (驱动程序信息:chromedriver = 2.9.248315, platform = Windows NT 6.1 SP1 x86_64)(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:30.05秒 有关此错误的文档, 请访问: http://seleniumhq.org/exceptions/no_such_element.html 内部版本信息:版本:"2.44.0", 修订:"76d78cf", 时间:'2014-10-23 20:03:00' 系统信息:主机:"AS-Ramesh", ip:"*******", os.name:Windows 7", os.arch:'x86', os.version:"6.1", java.version:"1.7.0_17" 会话ID:0e85209c610382395e8dee65a9766bd2 驱动程序信息:org.openqa.selenium.chrome.ChromeDriver 功能[{platform = XP, acceptSslCerts = true, javascriptEnabled = true, browserName = chrome, chrome = {userDataDir = C:\ Users \ rameshp \ AppData \ Local \ Temp \ scoped_dir27484_24934}, rotatable = false, locationContextEnabled = true, 版本= 40.0.2214.111, takeHeapSnapshot = true, cssSelectorsEnabled = true, databaseEnabled = false, handlesAlerts = true, browserConnectionEnabled = false, webStorageEnabled = true, nativeEvents = true, applicationCacheEnabled = false, TakesScreenshot = true}] 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)处 在sun.reflect.NativeConstructorAccessorImpl.newInstance(未知来源) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知来源) 在java.lang.reflect.Constructor.newInstance(未知来源) 在org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204) 在org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156) 在org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599) 在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352) 在org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:449) 在org.openqa.selenium.By $ ByXPath.findElement(By.java:357) 在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344) 在FEPModule.FEPLogin.Login_Main(FEPLogin.java:176) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在java.lang.reflect.Method.invoke(未知来源) 在org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84) 在org.testng.internal.Invoker.invokeMethod(Invoker.java:714) 在org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) 在org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) 在org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) 在org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) 在org.testng.TestRunner.privateRun(TestRunner.java:767) 在org.testng.TestRunner.run(TestRunner.java:617) 在org.testng.SuiteRunner.runTest(SuiteRunner.java:334) 在org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) 在org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) 在org.testng.SuiteRunner.run(SuiteRunner.java:240) 在org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 在org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 在org.testng.TestNG.runSuitesSequentially(TestNG.java:1224) 在org.testng.TestNG.runSuitesLocally(TestNG.java:1149) 在org.testng.TestNG.run(TestNG.java:1057) 在org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111) 在org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) 在org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)

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)

代码如下

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);

}

推荐答案

HTML来源可能会帮助我更好地进行分析.但是,您还可以在切换到特定的框架或窗口后使用getpagesource()函数调试代码,以检查其是否正确切换到页面,并查看元素是否在要切换到的页面中可用.

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.

这篇关于"org.openqa.selenium.NoSuchElementException:没有这样的元素"当我单击子窗口中的按钮时收到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆