2011-08-26 219 views
2

我有一个web应用程序,它会生成一个JS消息 '您确定要从此页面导航吗?'当你尝试打开一个新的页面。 我知道我可以通过如何处理'您确定要离开此页面'离开此页面吗?

Selenium.getAlert(); 

处理该邮件(或它的一些修改,我还没有尝试过)

但我的主要问题是,当我离开这个页面此消息仅生成。 在硒我可以用

Selenium.open("new address"); 

离开页面
Selenium.back(); 

于是我就用这样的代码

Selenium.open("new address"); 
Selenium.getAlert(); 

但问题是,Selenium.open没有完成,转到程序中的下一个代码行,直到新页面完全加载,但是只有当程序进入下一个代码行并处理此警报时才能加载该页面。所以这是一个尴尬的局面,我不知道如何处理它。

+0

这会有帮助吗? http://shivasoft.in/view_topic.php?id=101 – Asken

+0

你可能看看这里:http://stackoverflow.com/questions/6852732/selenium-webdriver-how-to-close-browser-popup –

回答

1

我不认为它可以完成,完全停留在Selenium RC API中。我有类似的情况,我通过在open()之前启动一个AutoIt脚本,等待提示并回答它。这只适用于Windows,但如果你需要其他系统的东西,我相信有相当的工具。

Selenium一直存在警报和确认问题(这是 - 确认有确定/取消选择),会导致页面加载发生问题。甚至还有一个错误消息中提供的古老错误编号,说明它无法捕捉它们。

+0

是的,我也想到使用AutoIt脚本来处理这种情况。它不漂亮,只在窗户上,但它的工作 – ShockwaveNN

0

用途:

openAndWait(..) 

也许这等SO question会帮助你。

+1

在当前版本的硒中,现在有openAndWait动作,因为我可以从文档中理解“AndWait”后缀是隐含的。 – ShockwaveNN

+1

“AndWait”的东西仅用于Selenium IDE,它在Selenium RC中不受支持。 –

+0

s/now/no /海报确实需要像openAndDontWait()这样的东西,只要它存在。 – joeytwiddle

0

我不知道这是否可行,但这是一个想法。你可以尝试这样的:

try { 
    driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); 
    Selenium.open("new address"); 
} catch (Exception e) { 
    // Should throw after 1 second 
} 

// Now we may be able to interact with the alert. 
Selenium.getAlert();