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