【发布时间】:2015-06-11 03:31:21
【问题描述】:
我正在尝试使用 WebDriver 来自动化网站。 我正在使用 Firefox 驱动程序,但主页有一个弹出模式警报窗口:说:
您需要使用 IE 6.0 来查看此应用程序。其他一些 功能可能不起作用 我检查了页面的来源,它有一个功能。 模态警报不是 HTML 元素,我尝试使用 FireBug 查找任何元素,但无济于事。
if ( strBrowName == "Microsoft Internet Explorer" )
{
if ( (( strBrowVersion.indexOf( 'MSIE 6' ) ) > 0 ) )
{
}
else
{
alert( "You need to use IE 6.0 for viewing this application. Else some features may not work" );
}
在我的 WebDriver 代码中,我在驱动程序中使用了以下功能(正如此处其他帖子所建议的那样)
DesiredCapabilities dc=new DesiredCapabilities();
dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR,UnexpectedAlertBehaviour.ACCEPT);
WebDriver driver =new FirefoxDriver(dc);
然后我进行一个简单的 get 调用,包含在 try-catch 中:
try {
driver.get(B);
}
catch (UnhandledAlertException e) {
System.err.println("Caught UnhandledAlertException: ");
}
System.out.println("URL Opened");
如果我不在驱动程序对象上写任何方法,而是关闭驱动程序。 程序在 Eclipse 中正常终止,但 Modal Alert 保持打开状态,尽管:
UnexpectedAlertBehaviour.ACCEPT
但是,如果我使用任何与驱动程序相关的方法或操作,就像 getTitle 一样简单:
String title = driver.getTitle();
Java 代码因异常而失败,但模式警报弹出窗口关闭! 错误的最后行号作为我使用的行给出 第一个驱动相关的操作。
请分享你的想法...
Exception in thread "main" org.openqa.selenium.UnhandledAlertException: Unexpected modal dialog (text: You need to use IE 6.0 for viewing this application. Else some features may not work): You need to use IE 6.0 for viewing this application. Else some features may not work
Build info: version: '2.46.0', revision: '87c69e2', time: '2015-06-04 16:17:10'
System info: host: 'LFY2DSY1', ip: '30.142.106.199', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_25'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=38.0.5, platform=WINDOWS, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: a97ab146-4929-4502-98f2-810169cc5532
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
at org.openqa.selenium.remote.ErrorHandler.createUnhandledAlertException(ErrorHandler.java:185)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:152)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:605)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:628)
at org.openqa.selenium.remote.RemoteWebDriver.getTitle(RemoteWebDriver.java:319)
at SelPkg.CIRS.main(CIRS.java:76)
【问题讨论】:
-
这可能是根本原因吗?绕过调用 fxdriver.modals.clearFlag_ ... cf。 stackoverflow.com/questions/44568402/…
标签: java selenium selenium-webdriver webdriver