S. Bunyard
S. Bunyard

Reputation: 41

How do you compare selector attributes in Testcafe?

I'm trying to compare the date of videos on a webpage to today's date. If the difference between the two dates is more than X days, report back as false.

The videos on the webpage have a tag in them which uses the format yyyy-mm-dd

I've got a selector set up to find the videos const videoDate = Selector('OPTA-video').withAttribute('data-secondary-time')

Now how do I set a variable to today's date and compare the two? I'm completely stuck!

I was using Katalon Studio before and here's the groovy script that did the same job:


String videoDate = WebUI.getAttribute(findTestObject('OPTA-video'), 'data-secondary_time')

LocalDate todaysDate = LocalDate.now()

LocalDate videoDateParsed = LocalDate.parse(videoDate, dtf)

if (ChronoUnit.DAYS.between(videoDateParsed, todaysDate) > 1) {
    KeywordUtil.markFailed('The videos are 2+ days old.')
} else {
    KeywordUtil.logInfo('The videos are up to date.')
}

Upvotes: 2

Views: 1215

Answers (2)

aleks-pro
aleks-pro

Reputation: 1669

You can use the getAttribute TestCafe method to access an attribute value. Then, parse the attribute value into the JavaScript Date object:

String videoDate = Selector('OPTA-video').getAttribute('data-secondary-time');

Date videoDateParsed = Date.parse(videoDate);

Date todaysDate = Date.now()

...

In the following thread you can find how to compare Date objects.

Upvotes: 3

lahimadhe
lahimadhe

Reputation: 398

This is one of the scripts that I am using.

//getting your XPath test value into a string
    String ann_time = 
       WebUI.getText(findTestObject("ObjectRepository/navigateTOElement/announcements_date"))

        //converting time to simple date format
        SimpleDateFormat sdf = new SimpleDateFormat('HH:mm')

        Date sdf_anntime = sdf.parse(new String(ann_time))

        //getting Current time
        SimpleDateFormat dateFormatGmt = new SimpleDateFormat('HH:mm')

        dateFormatGmt.setTimeZone(TimeZone.getTimeZone('GMT'))

        SimpleDateFormat dateFormatLocal = new SimpleDateFormat('HH:mm')

        currDate = dateFormatLocal.parse(dateFormatGmt.format(new Date()))

        // time gap in long format
        long duration = currDate.getTime() - sdf_anntime.getTime()

        //time gap to mins
        long diffInMinutes = TimeUnit.MILLISECONDS.toMinutes(duration)


        //compare time gap with globale variable 
        if (diffInMinutes < GlobalVariable.News_updated_time) {


            log.logInfo("system is getting updated,last updated "+ diffInMinutes + "min ago")

        } else {

            CustomKeywords.'errorMessage.logFailed.markStepFailed'('from 1 h, system was not updated')

            log.logInfo('from '+ diffInMinutes+ 'h, system was not updated')
        }

Upvotes: 1

Related Questions