Java Selenium Webdriver:切换窗口后获取NoTouchElementException

Java Selenium Webdriver:切换窗口后获取NoTouchElementException,java,window,selenium-webdriver,Java,Window,Selenium Webdriver,我的要求: 1) 去 2) 点击安全登录 3) 切换到新打开的窗口并在其中填写用户名和密码。在此窗口上查找用户名和密码会引发错误 I switch from window A to window B.When i try to perform an action on window B,it throws No such element exception.I am new to selenium webdriver.Please help me out. 我的代码: 导入java.util.

我的要求: 1) 去 2) 点击安全登录 3) 切换到新打开的窗口并在其中填写用户名和密码。在此窗口上查找用户名和密码会引发错误

I switch from window A to window B.When i try to perform an action on window B,it throws No such element exception.I am new to selenium webdriver.Please help me out.
我的代码:
导入java.util.Iterator;
导入java.util.Set;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.firefox.FirefoxDriver;
公共类WindowHandler1{
公共静态void main(字符串args[])引发InterruptedException
{
WebDriver=newfirefoxdriver();
驱动程序。获取(“http://www.kotak.com/bank/personal-banking/convenience-                   银行业务(banking/net banking.html);;
睡眠(5000);
driver.findelelement(By.xpath(“./*[@id='label-01']]/a[1]”)。单击();
设置windowids=driver.getWindowHandles();
迭代器iter=windowids.Iterator();
System.out.println(windowids);
字符串mainWindowId=iter.next();
字符串tabedWindowId=iter.next();
睡眠(2000L);
//切换到新的弹出窗口
driver.switchTo().window(tabedWindowId);
睡眠(20000);
//在执行下面的行时没有得到这样的元素异常
driver.findelelement(By.xpath(“./*[@id='Username']”);
driver.findElement(By.id(“用户名”)).sendKeys(“abc”);
}
}

我也遇到了类似的问题,并注意到在selenium的窗口句柄列表中,顺序并不总是相同的。因此,在代码中,您似乎依赖于列表中的最后一个窗口是新窗口,而它可能是第一个窗口。解决方案是确保您尝试切换到的窗口与当前窗口句柄不同


您可能会遇到NoTouchElement异常,因为您的窗口不正确。

有人回答了类似的问题。看看这个答案
     My code :


    import java.util.Iterator;
    import java.util.Set;

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;

    public class WindowHandler1 {


public static void main(String args[]) throws InterruptedException
{

    WebDriver driver = new FirefoxDriver();     

    driver.get("http://www.kotak.com/bank/personal-banking/convenience-                   banking/net-banking.html");
    Thread.sleep(5000);

    driver.findElement(By.xpath(".//*[@id='label-01']/a[1]")).click();
    Set<String> windowids = driver.getWindowHandles();
    Iterator<String> iter = windowids.iterator();
            System.out.println(windowids);

    String mainWindowId = iter.next();
    String tabedWindowId = iter.next();
    Thread.sleep(2000L);

            // switching to the new pop up window
            driver.switchTo().window(tabedWindowId);

            Thread.sleep(20000);

            //getting no such element exception upon executing  line below 
    driver.findElement(By.xpath(".//*[@id='Username']")).sendKeys("username");
            driver.findElement(By.id("Username")).sendKeys("abc");