Java 需要有关在selenium webdriver中新打开的窗口中查找文本框的帮助吗

Java 需要有关在selenium webdriver中新打开的窗口中查找文本框的帮助吗,java,selenium,Java,Selenium,我使用了这个代码,得到的错误是 线程“main”中出现异常 org.openqa.selenium.NoSuchElementException:找不到元素 id==txtEnterDescription(警告:服务器未提供 任何堆栈跟踪信息)命令持续时间或超时:30.05 秒”。此文本框的HTML代码为“” 请帮我解决这个问题只有在两种情况下,你肯定会面临“无接触例外” String parentHandle = driver.getWindowHandle(); driver.fi

我使用了这个代码,得到的错误是

线程“main”中出现异常 org.openqa.selenium.NoSuchElementException:找不到元素 id==txtEnterDescription(警告:服务器未提供 任何堆栈跟踪信息)命令持续时间或超时:30.05 秒”。此文本框的HTML代码为“”

请帮我解决这个问题

只有在两种情况下,你肯定会面临“无接触例外”

String parentHandle = driver.getWindowHandle();     
driver.findElement(By.id("ImageButton5")).click();
for (String winHandle : driver.getWindowHandles()) {
    driver.switchTo().window(winHandle);                
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);                    
}
driver.findElement(By.id("txtEnterDescription")).sendKeys("Test");
driver.findElement(By.id("chklstAllprocedure_0")).click();

只需确保切换到正确的窗口即可

理由1:只需确保切换到正确的窗口即可

我有一个实用的方法切换到所需的窗口,如下所示

 1.The Element is yet to be Loaded
     - Have an appropriate wait logic here.
 2. You may try to locate the element wrongly .
     - Double Check your Xpath/ID(what ever)
     - Make sure you are in the same frame where the element is present.If not, switch to the frame then.
此方法在处理多个窗口时有效

第2步:等待元素

Webdriver parentDriver = Utility.getHandleToWindow("titleOfParentWindow");
原因3:检查元素是否在帧中,如果是,则切换到之前的帧

WebdriverWait wait = new  WebdriverWait(driver,7000);
wait.until(ExpectedConditions.visbilityOfElementLocatedBy(By.name("nameofElement")));

让我们知道它是否有效。

猜测问题在于您切换到逻辑。我认为,当您切换时,它传递的是父代码,而不是子代码。对于这个场景,创建两个局部变量parent和child。使用迭代器循环遍历窗口句柄,将父窗口id和子窗口id设置为变量,并将子窗口id传递给switchTo方法。这应该行得通。随时通知我。愉快的编码。

有什么原因让你含蓄地等待30秒吗?这是非常糟糕的测试技术。也就是说,被测系统的响应时间预计在1-30秒之间,我已经检查过了。我没有新窗口的框架id,我尝试了Xpath以及id和名称,出现了相同的错误。请给我另一个解决方案。。。提前谢谢
WebdriverWait wait = new  WebdriverWait(driver,7000);
wait.until(ExpectedConditions.visbilityOfElementLocatedBy(By.name("nameofElement")));
driver.switchTo.frame("frameName");