Skip to content

Commit

Permalink
Fixing WDBS compatibility with IE5. Fixes issue 7938
Browse files Browse the repository at this point in the history
  • Loading branch information
barancev committed Sep 23, 2014
1 parent f85749a commit 5adeab4
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 15 deletions.
4 changes: 1 addition & 3 deletions .idea/copyright/profiles_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 15 additions & 5 deletions dotnet/src/webdriverbackedselenium/Internal/AlertOverride.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ public void ReplaceAlertMethod()
((IJavaScriptExecutor)this.driver).ExecuteScript(
"var canUseLocalStorage = false; " +
"try { canUseLocalStorage = !!window.localStorage; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage) { " +
"var canUseJSON = false; " +
"try { canUseJSON = !!JSON; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage && canUseJSON) { " +
" window.localStorage.setItem('__webdriverAlerts', JSON.stringify([])); " +
" window.alert = function(msg) { " +
" var alerts = JSON.parse(window.localStorage.getItem('__webdriverAlerts')); " +
Expand Down Expand Up @@ -73,7 +75,9 @@ public string GetNextAlert()
string result = (string)((IJavaScriptExecutor)this.driver).ExecuteScript(
"var canUseLocalStorage = false; " +
"try { canUseLocalStorage = !!window.localStorage; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage) { " +
"var canUseJSON = false; " +
"try { canUseJSON = !!JSON; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage && canUseJSON) { " +
" if (!('__webdriverAlerts' in window.localStorage)) { return null } " +
" var alerts = JSON.parse(window.localStorage.getItem('__webdriverAlerts')); " +
" if (! alerts) { return null } " +
Expand Down Expand Up @@ -107,7 +111,9 @@ public bool IsAlertPresent()
object alertResult = ((IJavaScriptExecutor)this.driver).ExecuteScript(
"var canUseLocalStorage = false; " +
"try { canUseLocalStorage = !!window.localStorage; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage) { " +
"var canUseJSON = false; " +
"try { canUseJSON = !!JSON; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage && canUseJSON) { " +
" if (!('__webdriverAlerts' in window.localStorage)) { return false } " +
" var alerts = JSON.parse(window.localStorage.getItem('__webdriverAlerts')); " +
" return alerts && alerts.length > 0; " +
Expand All @@ -132,7 +138,9 @@ public string GetNextConfirmation()
string result = (string)((IJavaScriptExecutor)this.driver).ExecuteScript(
"var canUseLocalStorage = false; " +
"try { canUseLocalStorage = !!window.localStorage; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage) { " +
"var canUseJSON = false; " +
"try { canUseJSON = !!JSON; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage && canUseJSON) { " +
" if (!('__webdriverConfirms' in window.localStorage)) { return null } " +
" var confirms = JSON.parse(window.localStorage.getItem('__webdriverConfirms')); " +
" if (! confirms) { return null } " +
Expand Down Expand Up @@ -164,7 +172,9 @@ public bool IsConfirmationPresent()
object confirmResult = ((IJavaScriptExecutor)this.driver).ExecuteScript(
"var canUseLocalStorage = false; " +
"try { canUseLocalStorage = !!window.localStorage; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage) { " +
"var canUseJSON = false; " +
"try { canUseJSON = !!JSON; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage && canUseJSON) { " +
" if (!('__webdriverConfirms' in window.localStorage)) { return false } " +
" var confirms = JSON.parse(window.localStorage.getItem('__webdriverConfirms')); " +
" return confirms && confirms.length > 0; " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ protected override object HandleSeleneseCommand(IWebDriver driver, string locato
((IJavaScriptExecutor)driver).ExecuteScript(
"var canUseLocalStorage = false; " +
"try { canUseLocalStorage = !!window.localStorage; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage) { " +
"var canUseJSON = false; " +
"try { canUseJSON = !!JSON; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage && canUseJSON) { " +
" window.localStorage.setItem('__webdriverNextConfirm', JSON.stringify(arguments[0])); " +
"} else { " +
" window.__webdriverNextConfirm = arguments[0];" +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ public void replaceAlertMethod(WebDriver driver) {
((JavascriptExecutor) driver).executeScript(
"var canUseLocalStorage = false; " +
"try { canUseLocalStorage = !!window.localStorage; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage) { " +
"var canUseJSON = false; " +
"try { canUseJSON = !!JSON; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage && canUseJSON) { " +
" window.localStorage.setItem('__webdriverAlerts', JSON.stringify([])); " +
" window.alert = function(msg) { " +
" var alerts = JSON.parse(window.localStorage.getItem('__webdriverAlerts')); " +
Expand Down Expand Up @@ -84,7 +86,9 @@ public String getNextAlert(WebDriver driver) {
String result = (String) ((JavascriptExecutor) driver).executeScript(
"var canUseLocalStorage = false; " +
"try { canUseLocalStorage = !!window.localStorage; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage) { " +
"var canUseJSON = false; " +
"try { canUseJSON = !!JSON; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage && canUseJSON) { " +
" if (!('__webdriverAlerts' in window.localStorage)) { return null } " +
" var alerts = JSON.parse(window.localStorage.getItem('__webdriverAlerts')); " +
" if (! alerts) { return null } " +
Expand Down Expand Up @@ -112,7 +116,9 @@ public boolean isAlertPresent(WebDriver driver) {
return Boolean.TRUE.equals(((JavascriptExecutor) driver).executeScript(
"var canUseLocalStorage = false; " +
"try { canUseLocalStorage = !!window.localStorage; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage) { " +
"var canUseJSON = false; " +
"try { canUseJSON = !!JSON; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage && canUseJSON) { " +
" if (!('__webdriverAlerts' in window.localStorage)) { return false } " +
" var alerts = JSON.parse(window.localStorage.getItem('__webdriverAlerts')); " +
" return alerts && alerts.length > 0; " +
Expand All @@ -127,7 +133,9 @@ public String getNextConfirmation(WebDriver driver) {
String result = (String) ((JavascriptExecutor) driver).executeScript(
"var canUseLocalStorage = false; " +
"try { canUseLocalStorage = !!window.localStorage; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage) { " +
"var canUseJSON = false; " +
"try { canUseJSON = !!JSON; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage && canUseJSON) { " +
" if (!('__webdriverConfirms' in window.localStorage)) { return null } " +
" var confirms = JSON.parse(window.localStorage.getItem('__webdriverConfirms')); " +
" if (! confirms) { return null } " +
Expand All @@ -153,7 +161,9 @@ public boolean isConfirmationPresent(WebDriver driver) {
return Boolean.TRUE.equals(((JavascriptExecutor) driver).executeScript(
"var canUseLocalStorage = false; " +
"try { canUseLocalStorage = !!window.localStorage; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage) { " +
"var canUseJSON = false; " +
"try { canUseJSON = !!JSON; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage && canUseJSON) { " +
" if (!('__webdriverConfirms' in window.localStorage)) { return false } " +
" var confirms = JSON.parse(window.localStorage.getItem('__webdriverConfirms')); " +
" return confirms && confirms.length > 0; " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ protected Void handleSeleneseCommand(WebDriver driver, String locator, String va
((JavascriptExecutor) driver).executeScript(
"var canUseLocalStorage = false; " +
"try { canUseLocalStorage = !!window.localStorage; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage) { " +
"var canUseJSON = false; " +
"try { canUseJSON = !!JSON; } catch(ex) { /* probe failed */ } " +
"if (canUseLocalStorage && canUseJSON) { " +
" window.localStorage.setItem('__webdriverNextConfirm', JSON.stringify(arguments[0])); " +
"} else { " +
" window.__webdriverNextConfirm = arguments[0];" +
Expand Down

2 comments on commit 5adeab4

@ivlists
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Compatibility with IE5? I mean, seriously?

@tvasenin
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, some frames (e.g. some credit card merchants) still use such compatibility for legacy reasons even on modern websites like internet shops.

More importantly, JSON check also fixes IE Quirks mode, which is the default mode for 'about:blank' page at least in IE8.

Please sign in to comment.