Cognos reports synthetics Monitoring

Hi ,

Is it possible to monitor cognos reports using scripted browser.

Thanks
Nikhil

Hi @Nikhil.Anand - If the Cognos front end is web based and is accessible publicly then you can use Synthetics to monitor Cognos. If the server is not publicly available, outside of your network, then you may need private minions.

2 Likes

@stefan_garnham
Unable to capture the steps related to cognos reports, are u aware of someone who recorded steps related to cognos reports or have you done any scripted browser .

Meanwhile we do have our private minions configured.

-Thanks

Hi @Nikhil.Anand - I have not written a script for Cognos, but there is a sample browser script including maintenance windows that I created

1 Like

Hey @Nikhil.Anand - If you had a chance to try @stefan_garnham’s script, we would love to know if that did the trick.

Hi @hross

Our goal is different we want to capture cognos functional report performance through synthetic scripted browser but as if now we are unable to capture the elements through scripted browser via selenium builder tool or doing manually , Stefan script doesn’t help in our case.

I am not sure if this supported since unable to locate any threads around cognos reports synthetic monitoring . Let me know if you have anything insightful regarding the same.

Thanks
Nikhil

Thanks @Nikhil.Anand - I will send this over to one of our staff to see if we can get it cleared up definitively.

Hi @Nikhil.Anand,

Since Cognos is a webapp, the finding and selecting of the elements should be possible with selenium webdriver in Synthetics, but it maybe tricky to find the right selectors. Reviewing the code on the webapp page, a lot of these elements are dynamically generated, along with some of their attribute values, like ids, are sometimes generated specific to date and time.

Finding the right selectors for these elements is definitely going to need a personal / manual touch using your browser developer tools page inspector. For instance, using the chrome ‘Elements’ view, right clicking an element, and selecting an option from the ‘copy’ sub-menu provides some selectors to choose from. Here are some points of guidance:

  • Use $browser.waitForAndFindElement() with liberal timeouts. This is going to be your friend for dynamically generated DOM elements

  • I noticed the login for Cognos is an iframe, so using $browser.switchTo().frame is going to be critical for switching context

  • Using the $driver.By.css() might be helpful in most cases for selecting elements in the app. For example to select for the login on the main page:

    $browser.get(‘https://www.ibm.com/products/cognos-analytics’).then(function(){
    console.log(‘find login’);
    return $browser.waitForAndFindElement($driver.By.css(“a[class=‘urx-modal-login’]”),10000)
    }).then(function(element){
    console.log(‘click login’);
    element.click();
    })

In the webapp itself, it appears a lot of the UI is navigable by button elements, so selecting for them like so should work:

$browser.waitForAndFindElement($driver.By.css("button[id='com.ibm.bi.contentApps.myContentFoldersSlideout']"),10000)

Additional Resources

Let me know if this helpful or if you have any additional questions!

2 Likes

Thanks @Michel_L we will test based on your inputs.

Let us know if it works out @Nikhil.Anand!

Hello, so far I could access folders and subfolder on Cognos Analytics just with Selenium Builder. I encounter problems when trying to get properties for a particular report (implies clicking a 3 dotted “button” (html element is not one) Until that step and post it, everything works, (and should work afterwards as all steps are recorded)

This is inspector

I wonder if I could use $driver.By:css() method here, perhaps putting svg.svgicon somewhere?
Furthermore, same thing happens with the following arrow…

BTW, The purpose is to then View Versions and depending on the status of the last run, assert for Successful or fail

imagen

Hi @durante, it looks like your on the right track with $driver.By:css(). What you can do is find the containing div using $driver.By.linkText() or $driver.By.xpath(), then get that svg.svgicon by css from the result

Hi!, thanks for the tip. It is a bit difficult to determine the parameters to use…

This is the path to the button.

Inside table id=“lc_52” class=“listControl dataTable no-footer”, there’s tbody, tr “selected”, td class " icon ellipsesButton_cell" and then div class “ellipsesButton forceRowSelection contentListFocusable” with the button svg.svgicon inside.

According to Selenium, the table is recreated as we drilldown. Here are 2 steps (click on parent folder, then click on subfolder)

// Step 6 -- GLAIM folder
.then(function() {
  log(6, 'clickElement "//table[@id=\'lc_52\']/tbody/tr[16]/td[2]/div[1]/div"');
  return $browser.waitForAndFindElement(By.xpath("//table[@id=\'lc_52\']/tbody/tr[16]/td[2]/div[1]/div"), DefaultTimeout); })
.then(function (el) { el.click(); })

// Step 7 -- PASS folder
.then(function() {
  log(7, 'clickElement "//table[@id=\'lc_52\']/tbody/tr[15]/td[2]/div[1]/div"');
  return $browser.waitForAndFindElement(By.xpath("//table[@id=\'lc_52\']/tbody/tr[15]/td[2]/div[1]/div"), DefaultTimeout); })
.then(function (el) { el.click(); })

They both click on same element, by vary the row number. I wonder if something like this could apply to the options button.

1 Like

Hi again @durante! Since we don’t have insight into your site, I wanted to check in and see if you had any updates or news to share on how this is working for you. It seems to me that you were on the right path last we heard from you!

Hope to talk soon! :blush: