我已经推出了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/
2 回答
在我看来,这是一个竞争条件错误 . 我自己有这些情况,我实际上可以看到一个窗口,但Selenium仍然说它不在那里 .
您是否尝试将睡眠时间设置为更高的值?
在单击元素之前,您还可以尝试设置expect-wait-condition .
以下是您的问题的解决方案:
关于解决方案的几句话:
xpath
html/body/div[2]/div/div/header/nav/ul/li[2]/a
看起来很容易让我使用linkText
定位器 .一旦使用
Action
Class到build().perform()
,在定位另一个元素之前引出一些wait
.使用
linkText
locator而不是//*[@id='menu-item-35']/a
元素的xpath
定位符 .再次
xpath
//*[@id='default_products_page_container']/div[3]/div[2]/form/div[2]/div[1]/span/input
看起来很容易受到我使用逻辑唯一xpath
.这是您自己的工作代码块,其中包含一些简单的调整:
如果这回答你的问题,请告诉我 .