NoSuchWindowException-Selenium 3.4.0-IE 11

NoSuchWindowException-Selenium 3.4.0-IE 11,selenium,selenium-webdriver,internet-explorer-11,selenium-iedriver,selenium3,Selenium,Selenium Webdriver,Internet Explorer 11,Selenium Iedriver,Selenium3,我推出了IE 11浏览器 我已导航到一个初始URL-->鼠标悬停并单击一个链接-->它将重定向到另一个页面 在该页面中,我必须单击一个按钮,但它引发了一个异常 org.openqa.selenium.NoSuchWindowException:无法在关闭的窗口中找到元素 但屏幕上的窗口仍然可用 这是我的密码 WebElement e=driver.findElement(By.xpath(“html/body/div[2]/div/div/header/nav/ul/li[2]/a”) //异常

我推出了IE 11浏览器

我已导航到一个初始URL-->鼠标悬停并单击一个链接-->它将重定向到另一个页面

在该页面中,我必须单击一个按钮,但它引发了一个异常

org.openqa.selenium.NoSuchWindowException:无法在关闭的窗口中找到元素

但屏幕上的窗口仍然可用

这是我的密码

WebElement e=driver.findElement(By.xpath(“html/body/div[2]/div/div/header/nav/ul/li[2]/a”)

//异常在此之后发生,但当我删除下面的代码时,测试用例通过

driver.findElement(By.xpath("//*[@id='default_products_page_container']/div[3]/div[2]/form/div[2]/div[1]/span/input")).click();

这是页面的URL:

在我看来,这是一个竞争条件错误。我自己也有过这样的案例,我可以看到一扇窗户,但Selenium仍然说它不在那里

您是否尝试过将睡眠时间设置为更高的值

您还可以尝试在单击元素之前设置一个预期等待条件

    WebDriverWait wait = new WebDriverWait(DRIVER, 20);
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='default_products_page_container']/div[3]/div[2]/form/div[2]/div[1]/span/input"))

以下是您问题的解决方案:

关于解决方案的几句话:

  • xpath
    html/body/div[2]/div/div/header/nav/ul/li[2]/a
    对于我使用
    linkText
    定位器来说似乎很容易受到攻击
  • 一旦您使用
    Action
    类来
    build()
  • 使用
    linkText
    定位器代替
    /*[@id='menu-item-35']/a
    元素的
    xpath
    定位器
  • 同样地,
    xpath
    /*[@id='default\u products\u page\u container']/div[3]/div[2]/form/div[2]/div[1]/span/input
    对我来说,使用逻辑上唯一的
    xpath
    看起来很脆弱
  • 以下是您自己的工作代码块,其中包含一些简单的调整:

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    WebElement e = driver.findElement(By.linkText("Product Category"));
    Actions a = new Actions(driver);
    a.moveToElement(e).build().perform();
    driver.findElement(By.linkText("iMacs")).click();
    driver.findElement(By.xpath("//input[@name='Buy']")).click();
    

  • 如果这能回答您的问题,请告诉我。

    “它会重定向到另一个页面。”这是一个新的浏览器选项卡吗?不,它是同一个选项卡和窗口。是否有iframe?我已经完成了,但没有用。这可能与浏览器配置有关您所说的“代码”不起作用是什么意思?你能显示错误跟踪吗?你能启动IE浏览器吗?它会打开URL吗?
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    WebElement e = driver.findElement(By.linkText("Product Category"));
    Actions a = new Actions(driver);
    a.moveToElement(e).build().perform();
    driver.findElement(By.linkText("iMacs")).click();
    driver.findElement(By.xpath("//input[@name='Buy']")).click();