Siva,
So, this is the part about asynchronous code that takes a moment to get
your head around. findElement is returning a Promise, not the Element
object as you would expect in Java. To get the result of the findElement
function you need to wait until it's complete evaluating the function. You
can do this in two ways:
// assuming e.isEmpty() is a method of the returned element...
findElement(By.xpath("//xxx")).then( (e) => {
e.isEmpty();
});
Or using async/await :
let e = await findElement(By.xpath("//xxx"));
e.isEmpty();
HTH,
Mikkel
Oblivious.io <https://www.oblivious.io/?r=googlenode>
On Tuesday, September 4, 2018 at 11:14:56 PM UTC-7, siva prasad wrote:
>
> Thanks a ton Mikkel. That was really helpful.
>
> I have one more question though.
> I come from a Java background.
>
> We have something like this in Java for Selenium.
>
> *findElement(By.xpath("//xxx")).isEmpty() *
>
> Is there anything similar to this in JS for selenium?
>
> I have done a bit of research but in vain.
> It would be really helpful.
>
> On Monday, 3 September 2018 12:04:30 UTC+5:30, 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/ec8984d5-2626-4994-8f60-0355c46ec62f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.