【问题标题】:NoSuchWindowException - Selenium 3.4.0 - IE 11NoSuchWindowException - Selenium 3.4.0 - IE 11
【发布时间】:2017-10-15 03:43:20
【问题描述】:

我已经启动了 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"));

    Actions a = new Actions(driver);
    a.moveToElement(e).build().perform();

    driver.findElement(By.xpath("//*[@id='menu-item-35']/a")).click();



  TimeUnit.SECONDS.sleep(5);

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

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

这是页面的 URL:http://store.demoqa.com/

【问题讨论】:

  • “它重定向到另一个页面。”这是一个新的浏览器标签吗?
  • 不,它是同一个标签和窗口
  • 有 iframe 吗?

标签: selenium selenium-webdriver internet-explorer-11 selenium-iedriver selenium3


【解决方案1】:

在我看来这是一个竞争条件错误。我自己也有这些案例,我实际上可以看到一扇窗户,但 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"))

【讨论】:

  • 我做了,但是没用。这可能与浏览器配置有关
【解决方案2】:

这是您问题的解决方案:

关于解决方案的几句话:

  1. xpathhtml/body/div[2]/div/div/header/nav/ul/li[2]/a 在我看来有点脆弱,使用 linkText 定位器。
  2. 一旦你使用Action 类到build().perform(),在定位另一个元素之前引入一点wait。
  3. 而不是//*[@id='menu-item-35']/a 元素的xpath 定位器,使用linkText 定位器。
  4. 再一次,xpath //*[@id='default_products_page_container']/div[3]/div[2]/form/div[2]/div[1]/span/input 在我看来有点脆弱,使用逻辑唯一xpath。
  5. 这是您自己的工作代码块,其中包含一些简单的调整:

    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();
    

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

【讨论】:

  • its not working 是什么意思?你能显示错误堆栈跟踪吗?你能启动IE浏览器吗?它会打开 URL 吗?
猜你喜欢
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
  • 2014-12-30
  • 1970-01-01
相关资源
最近更新 更多