簡體   English   中英

當我單擊子窗口中的按鈕時,收到“ org.openqa.selenium.NoSuchElementException:沒有這樣的元素”

[英]“org.openqa.selenium.NoSuchElementException: no such element” received when i click button in child window

控制台中的錯誤消息如下。

嘗試在子窗口中單擊按鈕時出現以下錯誤。

org.openqa.selenium.NoSuchElementException:沒有此類元素(會話信息:chrome = 40.0.2214.111)(驅動程序信息:chromedriver = 2.9.248315,平台= 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:'*******',操作系統名稱:'Windows 7',操作系統名稱:'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,需要HeapSnapshot = true,cssSelectorsEnabled = true,databaseEnabled = fals e,在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本機方法)處,在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本機方法)處的handlesAlerts = true,webStorageEnabled = true,nativeEvents = true,applicationCacheEnabled = false,takesScreenshot = true}(未知源),位於org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)上的java.lang.reflect.Constructor.newInstance(未知源)上的sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知源)上。 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)上的.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.findElement(RemoteWebDriver.java:599) :352),位於org.openqa.selenium.remote的org.openqa.selenium.By $ ByXPath.findElement(By.java:357)的org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:449)處。 RemoteWebDriver.findElement(RemoteWebDriver.java:3 44)在FEPModule.FEPLogin.Login_Main(FEPLogin.java:176)在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法)在sun.reflect.NativeMethodAccessorImpl.invoke(未知源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源) )的org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)的org.testng.internal.Invoker.invokeMethod(Invoker.java:714)的java.lang.reflect.Method.invoke(未知源) org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)上的org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)在org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)在組織org.testng.TestRunner.run(TestRunner.java:617)的org.testng.TestRunner.privateRun(TestRunner.java:767)的org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)處。 org.testng.SuiteRunner.run的testng.SuiteRunner.runTest(SuiteRunner.java:334)org.testng.SuiteRunner.priv的序列(SuiteRunner.java:329) 在org.testng.SuiteRunner.run(SuiteRunner.java:240)在org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)的ateRun(SuiteRunner.java:291)在org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java)的Suite(SuiteRunnerWorker.java:52) :86)位於org.testng.TestNG.runSuitesLocally(TestNG.java:1149)位於org.testng.TestNG.runSuitesLocally(TestNG.java:1149)位於org.testng.TestNG.run(TestNG.java:1057) org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)上的.testng.remote.RemoteTestNG.run(RemoteTestNG.java:175)在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()函數調試代碼,以檢查其是否正確切換到頁面,並查看元素是否在要切換到的頁面中可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM