2016-10-04 130 views
-1

我试图切换到弹出警报,并单击确定按钮,但我得到一个错误,说没有找到xpath(对于确定按钮)。Selenium Webdriver中的警报处理

但是,这有时使用相同的代码对我有用。任何人都可以帮我解决这个问题。我尝试了所有可用的方法,在博客中可用。但我不能让它

+0

请上传您所使用的代码以及任何错误等,以及到页面和/或相关HTML的链接。 – JeffC

+0

http://stackoverflow.com/questions/8244723/alert-handling-in-selenium-webdriver-selenium-2-with-java – JeffC

+0

我可以从以下链接得到答案 http:///stackoverflow.com/questions/12893478/selenium-webdriver-with-java-cant-accept-alert 由于代码不能识别弹出警报。我尝试使用Keys.ENTER单击确定按钮。它为我工作 – Meghasri

回答

0

根据原始问题和随后的评论,我怀疑你正在处理的是浏览器弹出窗口而不是警报。所以,这是不行的

driver.switchTo().alert().accept(); 

您需要使用窗口句柄

Set<String> handles = driver.getWindowHandles(); 
Iterator<String> windows = handles.iterator(); 
String parent = windows.next(); 
String child = windows.next(); 
driver.switchTo().window(child); 
driver.findElement(By.xpath("insert xpath to OK button")).click(); 
driver.switchTo().window(parent); 
//continue with steps on parent window 

注:请确保您所需的同步添加到代码片段上方

+0

我同意这不是一个警报,但它可能不是一个新窗口。这听起来像一个简单的DIV弹出窗口。 – JeffC

+0

确实如此。在这种情况下,解决方案就是等待ok按钮并点击它。但是没有太多信息可以通过。 – Sai

+0

同意。我们作为一个社区,在我们开始回答问题之前需要更坚持要求基本事实。我们会得到更好的问题,更好的答案,并且花费更少的时间浪费时间在没有任何信息的问题上,这些信息可能永远不会被固定为好问题。 – JeffC

2

你需要先做上弹出窗口中的任何操作之前移动控制你的弹出窗口: -

下面的代码是在弹出窗口中移动硒控制

driver.switchTo().alert(); 

通过写下面一行

alert.accept(); 

警报将接近

+0

第二行'alert.accept();'将正确关闭警报? – Meghasri

+0

我用第一行和driver.switchTo()。alert();我给了OK按钮的xpath,但它仍然没有识别弹出警报 – Meghasri

+0

我得到了一个错误,如 没有警报存在(警告:服务器没有提供任何堆栈跟踪信息) – Meghasri

相关问题