Siva,
I'm not sure exactly what front-end testing framework you're using here,
but there are two ways to handle the promise rejection you're seeing. First
is to just wrap this whole block in a try/catch.
try {
driver.findElement(By.id('username')).sendKeys('xxx');
driver.findElement(By.id('password')).sendKeys('xxx');
driver.findElement(By.id('submit')).click();
driver.findElement(By.linkText('Business Continuity')).click();
} catch (err){
console.log('error', err);
}
This will handle any Promise rejections from any of these findElement()
calls. If you want to be more granular is you're error handling, you can
'catch' any of the Promise rejections individually.
driver.findElement(By.id('username')).sendKeys('xxx');
driver.findElement(By.id('password')).sendKeys('xxx');
driver.findElement(By.id('submit')).click();
driver.findElement(By.linkText('Business Continuity')).click()
.catch( (err) => {
console.log('error', err);
});
It should also be noted that these findElement calls are not guaranteed to
run in sequence. This may also be a source of trouble for you since the
'Business Continuity' link may not be there before the 'submit' button is
clicked.
Since the findElement functions all return Promises, making sure they run
in order is quite straight forward using async/await.
it('tests login sequence', async function() {
await driver.findElement(By.id('username')).sendKeys('xxx');
await driver.findElement(By.id('password')).sendKeys('xxx');
await driver.findElement(By.id('submit')).click();
await driver.findElement(By.linkText('Business Continuity')).click()
.catch( (err) => {
console.log('error', err);
});
}
One last thought: When writing tests, it's often helpful to *not* catch
errors and let the test crash. This leaves a more helpful stack trace than
the error Object that the caught error provides.
HTH,
Mikkel
Oblivious.io <https://www.oblivious.io/?r=googlenode>
On Sunday, September 2, 2018 at 11:34:30 PM UTC-7, siva prasad wrote:
>
> I am fairly new to the JS scripting.
> Started using JS for end-to-end test case automation.
>
> I am facing an issue here.
>
> *Issue: *
> UnhandledPromiseRejectionWarning: NoSuchElementError: no such element:
> Unable to locate element: {"method":"link text","selector":"Business
> Continuity"}
> (Session info: chrome=68.0.3440.106)
> (Driver info: chromedriver=2.35.528157
> (4429ca2590d6988c0745c24c8858745aaaec01ef),platform=Mac OS X 10.13.2 x86_64)
> at Object.checkLegacyResponse
> (/Users/sivaprasad/node_modules/selenium-webdriver/lib/error.js:585:15)
> at parseHttpResponse
> (/Users/sivaprasad/node_modules/selenium-webdriver/lib/http.js:533:13)
> at Executor.execute
> (/Users/sivaprasad/node_modules/selenium-webdriver/lib/http.js:468:26)
> at <anonymous>
> at process._tickCallback (internal/process/next_tick.js:188:7)
> (node:25855) UnhandledPromiseRejectionWarning: Unhandled promise
> rejection. This error originated either by throwing inside of an async
> function without a catch block, or by rejecting a promise which was not
> handled with .catch(). (rejection id: 1)
> (node:25855) [DEP0018] DeprecationWarning: Unhandled promise rejections
> are deprecated. In the future, promise rejections that are not handled will
> terminate the Node.js process with a non-zero exit code.
>
> *Code:*
>
> driver.findElement(By.id('username')).sendKeys('xxx');
> driver.findElement(By.id('password')).sendKeys('xxx');
> driver.findElement(By.id('submit')).click();
> driver.findElement(By.linkText('Business Continuity')).click();
>
> I know there is something called Promise handling. Just that I am not able
> to get my head around it. Someone help me.
>
--
Job board: http://jobs.nodejs.org/
New group rules:
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/nodejs/1c54f124-96de-4a76-a528-0bf68675a81d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.