Closed
Bug 1366988
Opened 7 years ago
Closed 6 years ago
GeckoDriver#registerBrowser does not check if tab browser is available before getting
Categories
(Remote Protocol :: Marionette, defect, P4)
Tracking
(Not tracked)
RESOLVED
DUPLICATE
of bug 1311041
People
(Reporter: markus.hartung, Unassigned)
Details
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.61 Safari/537.36 Steps to reproduce: https://github.com/markus-hartung-avira/marionette-popup-bug Run the PopupTest class to run the test. The test does the following: 1. Start a Firefox session with an extension installed 2. Click the extension icon which opens the popup 3. Check if an element is displayed in the popup 4. Close the popup by sending escape key 5. Check if the extension icon is displayed I tested this with FF53 and FF54 Actual results: After step 4 the following error is logged: JavaScript error: chrome://marionette/content/driver.js, line 523: TypeError: be.getTabBrowser is not a function Executing step 5 results in: ************************* A coding exception was thrown and uncaught in a Task. Full message: TypeError: can't access dead object Full stack: ************************* ************************* A coding exception was thrown and uncaught in a Task. Full message: TypeError: can't access dead object Full stack: ************************* ************************* A coding exception was thrown in a Promise rejection callback. See https://developer.mozilla.org/Mozilla/JavaScript_code_modules/Promise.jsm/Promise Full message: TypeError: can't access dead object Full stack: ************************* Marionette threw an error: TypeError: can't access dead object Exception in thread "main" org.openqa.selenium.WebDriverException: TypeError: can't access dead object Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' System info: host: 'LTTW0350', ip: '169.254.244.75', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_101' Driver info: FirefoxDriver Capabilities: Not needed. Session ID: caa4a718-335f-4864-ba40-94c9e049b7c6 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:150) at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:115) at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:45) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637) at FirefoxDriver.execute(FirefoxDriver.java:33) at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:272) at org.openqa.selenium.remote.RemoteWebElement.isDisplayed(RemoteWebElement.java:313) at PopupTest.main(PopupTest.java:48) Expected results: isDisplayed should have returned true
Comment 1•7 years ago
|
||
And does this happen on Firefox Nightly? be.getTabBrowser is called in GeckoDriver#registerBrowser (https://searchfox.org/mozilla-central/rev/6c2dbacbba1d58b8679cee700fd0a54189e0cf1b/testing/marionette/driver.js#518), which means this isn’t directly related to the Is Element Displayed command, but is instead associated with the code that is run when a content frame script (testing/marionette/listener.js) registers with the chrome context. This happens whenever a new <xul:browser> appears.
Updated•7 years ago
|
Priority: -- → P4
Reporter | ||
Comment 2•7 years ago
|
||
Yes it is the same issue on Nightly.
Reporter | ||
Comment 3•7 years ago
|
||
I extended the check in the driver to if (this.appName != "Firefox" || be.namespaceURI != XUL_NS || be.nodeName != "browser" || (be.getTabBrowser && be.getTabBrowser())) { so that it doesn't throw an error. But the subsequent isDisplayed will still throw the same error
Comment 4•7 years ago
|
||
(In reply to Markus Hartung from comment #3) > I extended the check in the driver to > if (this.appName != "Firefox" || be.namespaceURI != XUL_NS || > be.nodeName != "browser" || (be.getTabBrowser && be.getTabBrowser())) { That seems like an OK change to make. Please feel free to submit a patch. > But the subsequent isDisplayed will still throw the same error That would be a separate bug.
Updated•7 years ago
|
Summary: Closing extension popup breaks isDisplayed → GeckoDriver#registerBrowser does not check if tab browser is available before getting
Comment 5•6 years ago
|
||
This will get resolved as part of https://bugzil.la/marionette-window-tracking.
Status: UNCONFIRMED → RESOLVED
Closed: 6 years ago
Resolution: --- → DUPLICATE
Updated•1 year ago
|
Product: Testing → Remote Protocol
You need to log in
before you can comment on or make changes to this bug.
Description
•