christian-bromann on main
update broken links (#6722) (compare)
christian-bromann on main
Update CustomServices.md (#6626… (compare)
Is there a way to wrap all element commands? I have an issue with a single browser where I randomly get a popup complaining about certs. The Browser is Win7 IE11, and the implication is that the element commands generate a /execte W3C request which will occasionally return a HTTP 500. I would like to wrap the commands and try to catch this specific error and force a retry. Unfortunately, dealing with the underlying cert issue is not possible and this seems to be the easiest option I can think of. I can wrap all my tests in a try-catch to handle it, but that is a lot of rework as I will have to change every test.
The specific error looks like this in selenium logs:17:48:55.280 DEBUG - sun.net.www.MessageHeader@b6db216 pairs: {null: HTTP/1.1 500 Internal Server Error}{Content-Length: 235}{Content-Type: application/json; charset=UTF-8}{Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept}{Accept-Ranges: bytes}{Connection: close}
17:48:55.281 INFO - To downstream: {"sessionId":"91146b96-7c25-4d1c-a679-063c4683dfae","status":26,"value":{"alert":{"text":"Revocation information for the security certificate for this site is not available. Do you want to proceed?"},"message":"Modal dialog present"}}
The modal seems to be dismissed or accepted immediately since in my testing, there are no other window handles available when this happens. It just causes some tests to bomb out unnecessarily. Open to any other ideas on how to handle this, but I think the easiest way is to add a try-catch around the test and retry on this specific error. But I do not want to override each element command individually.
/* Overwrite default element command behaviour to fix IE issues */
function overwriteFunction(origFunction, ...args) {
try {
// attempt to execute Original function
return origFunction(...args);
} catch (err) {
if (err.message.includes('Modal dialog present')) {
console.warn('WARN: Element', this.selector, 'threw an error and we are retrying.')
return origFunction(...args);
}
throw err
}
};
browser.overwriteCommand('scrollIntoView', overwriteFunction, true);
browser.overwriteCommand('$', overwriteFunction, true);
browser.overwriteCommand('getAttribute', overwriteFunction, true);
browser.overwriteCommand('getText', overwriteFunction, true);
browser.overwriteCommand('getLocation', overwriteFunction, true);
Hi all, I am having some issues with modals in headless chrome not working properly. As a test I set this up:
describe("test", function() {
it("test", function() {
browser.url("https://getbootstrap.com/docs/4.3/components/modal/");
browser.debug();
})
})
if I take a screenshot of that page then I just get a blank page. However, in non-headless mode it works fine.
Any ideas?
@nitinWFH https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/welcome.html
Thank you, i will go through it..!
Is this warning suppressable?
[0-0] RUNNING in chrome - /tests/specs/basic.js
[0-0] Warning! Unsupported expect lib is used.
Only Jasmine >= 3.3.0 and Jest's expect are supported.
expect-webdriverio is assigned to global.expectWdio
I imagine if I let the native assertion library use expect
that'd be fine, but I like using that instead of chai.expect
A service failed in the 'onPrepare' hook
Error: Appium exited before timeout (Exit code: 2)
at ChildProcess.exitCallback (/private/tmp/scratchkLlkKg.scratch/test-packageVJzcYO/node_modules/wdio-appium-service/build/launcher.js:94:28)
at Object.onceWrapper (events.js:317:30)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
Continue...
ERROR: ESOCKETTIMEDOUT
4545b75e9e343eb8ba9de068016dd13d5f192e71.ios
at new RuntimeError (/private/tmp/scratchkLlkKg.scratch/test-packageVJzcYO/node_modules/webdriverio/build/lib/utils/ErrorHandler.js:143:12)
at Request._callback (/private/tmp/scratchkLlkKg.scratch/test-packageVJzcYO/node_modules/webdriverio/build/lib/utils/RequestHandler.js:332:43)
at self.callback (/private/tmp/scratchkLlkKg.scratch/test-packageVJzcYO/node_modules/request/request.js:185:22)
at emitOne (events.js:116:13)
at Request.emit (events.js:211:7)
at ClientRequest.<anonymous> (/private/tmp/scratchkLlkKg.scratch/test-packageVJzcYO/node_modules/request/request.js:819:16)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at ClientRequest.emit (events.js:208:7)
at Socket.emitTimeout (_http_client.js:718:34)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at Socket.emit (events.js:208:7)
at Socket._onTimeout (net.js:422:8)
at ontimeout (timers.js:498:11)
at tryOnTimeout (timers.js:323:5)
Hi All i'm a bit new to the 'setting up' of automation frameworks. I've got an electron desktop app which I've configured to run spectron which under the hood accesses webdriverIO. Now i've used webdriver before i.e I recall the browser object. Reading online the browser object is application.client.
My automation test access the webdriverIO functions which is awesome! The only problem is. The intelisense for webdriverIO in spectron application.client does not show in VSCode for methods like element(), .getText(), pause(). The things native to webdriverIO how do I get them to appear to the programmer?
//iframe[contains(lower-case(@src), ‘exampleapp’)]