出于某种原因,当我通过IE运行我的功能测试时,我无法使用“executioncript”执行任何javascript。它适用于Firefox。我在谷歌搜索了几个小时没有运气。
我只是在打电话
browser.driver.executeScript("console.log('test');")
或
JavascriptExecutor js = (JavascriptExecutor) driver
driver.executeScript("console.log('test');")
或者您可以调用executeScript方法的任何变体。
我得到的堆栈跟踪是:
org.openqa.selenium.WebDriverException: JavaScript error (WARNING:
The server did not provide any stacktrace information)
Command duration or timeout: 164 milliseconds
Build info: version: '2.37.1', revision: 'a7c61cbd68657e133ae96672cf995890bad2ee42',
time: '2013-10-21 09:08:07'
System info: host: 'functionalTests', ip: '10.22.6.112', os.name: 'Windows 8', os.arch:
'x86', os.version: '6.2', java.version: '1.6.0_45'
Session ID: 8b04c740-07a0-4678-a1b6-aacd56268625
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0,
enablePersistentHover=true, ignoreZoomSetting=false, ie.ensureCleanSession=false,
browserName=internet explorer, enableElementCacheCleanup=true,
unexpectedAlertBehaviour=dismiss, version=11, ie.usePerProcessProxy=false,
cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false,
initialBrowserUrl=http://localhost:17553/, handlesAlerts=true,
ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0,
ie.browserCommandLineSwitches=, takesScreenshot=true}]
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
at
org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
at
org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:463)
at functional.utility.JQInstaller.installJQ(JQInstaller.groovy:16)
at functional.spec.NavigateAccountSettingsSpec.Navigate to the Account
Settings(NavigateAccountSettingsSpec.groovy:39)
我的“JQInstaller”类没有问题,因为我把它拿出来并尝试了console.log函数。这是“executeScript”方法的一个问题。我使用的是Selenium 2.37.1。
答案 0 :(得分:1)
您是否尝试过Enumerable版本?
IJavaScriptExecutor js = WebDriver.driver as IJavaScriptExecutor;
if (js != null) {
value = (string)js.ExecuteScript(javascriptArgumentAsString, element);
}
答案 1 :(得分:0)
IE 7及以下版本没有console.log。
IE 8,9和10有它,但开发工具必须打开。用F12打开它们。
IE 11工作正常。
每个IE浏览器都有一个脚本调试窗口,可以在IE工具菜单中激活。这会引发警报,向您显示旧IE浏览器失败的原因。
如果您需要额外的帮助,请在此处了解:Specifically at Walter's answer for an excellent solution