How to identify Windows ToolBar using CodedUI

Below code will help to click on buttons on tool bar which generally comes when we try to login into the application or try to download any file from the application.

As first action we do on the webpage so first we have to identify the webpage and then tool bar which pop-ups after performing the some actions. We have to use WinToolBar class to identify Tool Bar. So here you go-

BrowserWindow MainWin = new BrowserWindow();
MainWin.SearchProperties[BrowserWindow.PropertyNames.Name] = “Page Title Name”;
WinToolBar ToolStrip = new WinToolBar(MainWin);
ToolStrip.SearchProperties[WinToolBar.PropertyNames.Name] = “Notification”;
ToolStrip.DrawHighlight();
WinButton No= new WinButton(ToolStrip);
No.SearchProperties[WinButton.PropertyNames.Name] = “No”;
No.DrawHighlight();
Mouse.Click(No);

ToolBar1

 

Difference between @Factory and @DataProvider annotations

Both the annotations belong to TestNg testing framework. Many people get confused while reading about these two annotations that why and where we have to use these two?

Very basic difference between these two are-

@DataProvider- DataProvider annotations parameterize the particular test method and execute the test number of times based on data provided by DataProvider method. So if two parameters are there then test will execute twice.

@Factory- Factory executes all the test methods present inside any test class file using separate instance of the respective class.

Still confused???

Let’s have look on some programs-

@DataProvider
public Object[][] message(){
return new Object [][]{{“Mayank” , new Integer (321)}, {“Dileep”, new Integer (282)}};
}

@Test (dataProvider=”message”)
public void PrintMsg(String name, Integer id){
System.out.println(“Names are: “+name+” “+id);
}

As above program states that there are two data and if I run this program result will be-

Result1

So, it proves that if you increase the number of data in message method, PrintMsg method will execute same number of times.

Now we will see Factory and how it is different from DataProvider-

public class TestFactory {
@Factory
public Object[] factorymethod(){
return new Object[]{new DPandFactoryExaple(), new DPandFactoryExaple()};
}}

public class DPandFactoryExaple {
@DataProvider
public Object[][] message(){
return new Object [][]{{“Mayank” , new Integer (321)}, {“Dileep”, new Integer (282)}};
}
@Test (dataProvider=”message”)
public void PrintMsg(String name, Integer id){
System.out.println(“Names are: “+name+” “+id);
}
@Test
public void PrintSuccessfullMessage(){
System.out.println(“Print the successfull message”);
}}

So if we see DPandFactoryExaple class then you will find there are two @Test methods and 1 @Test method has to execute twice and 1 @Test method has to execute once. So there should be 3 messages.

Now if you see @Factory method it is calling the same class twice and in that case there should be 6 messages. See the results below-

Result2

So did it clear the doubts?? No, then comment it out we will discuss it.

 

How to include screenshots in ReportNG report?

Any test automation report is incomplete without the screenshots and including them in ReportNG is not that much difficult. In today’s post we will see how we can include the screenshots in ReportNG report. If you are wondering how to configure ReportNg with selenium then you can refer my previous post.

Here I am again considering that you already have below set-up-

  • Your project is already set-up in Eclipse
  • Project already has testng.xml file.
  • ReportNG is already set-up with Selenium and TestNG.

If above conditions are true then you just need to complete two steps-

1: Make it Escape_Property=false like this-

Screenshot

2: Now take the screenshot after some actions and pass through Reporter.log method to ReportNG report-

Screenshot1

Now run your testng.xml file and open the test report. If you have configured ReportNG properly and above set-up then you report should look like this-

screenshot3

How to configure ReportNG with Selenium WebDriver?

Selenium WebDriver is open source test automation framework which does not come with reporting facility. So selenium user has to be depended upon the third party plug-ins.

ReportNG is a simple HTML reporting plug-in for the TestNG unit-testing framework. It is intended as a replacement for the default TestNG HTML report. There are very few steps to configure ReportNG with WebDriver+TestNG.

To configure it we need three jar files (Guice, ReportNG, and Velocity-dep) which you can download from here-

http://reportng.uncommons.org/

and

https://github.com/google/guice/wiki/Guice30

Once you have these three jar files, please include them in your project-

lib

Here I am considering that you already have TestNg.xml file inside your project; if Yes, please include below listeners inside suite tag-

<listeners>
<listener class-name=”org.uncommons.reportng.HTMLReporter”/>
<listener class-name=”org.uncommons.reportng.JUnitXMLReporter”/>
</listeners>

Once you done, your testng.xml file should look like this-

TestNg

Now last step, disable the default testng listener by-

Right click on Project folder > click on Properties > click on TestNG which visible in left pane.

Test

All set, now run your testng.xml file and refresh your project. Once all done, It will add ‘test-output’ folder. Go to test-output > html > and open index.html to see the report.

report

Your report should look like this after all above set-up-

reports

How to configure Properties file with Selenium WebDriver?

Why Properties file?

To hide sensitive information of the projects we save the information in properties file.

To configure Properties file, create a new file and save as with .properties extension. Now add the data in following manner in Properties file:

URL=http://www.google.com
INT_USR=msrivastava
INT_PWD=Hello123&

Now use below lines of code to read this property file-

try{
FileInputStream prop = new FileInputStream (“D:\\Selenium_Projects\\Property\\setup.properties”);
Properties a = new Properties ();
try {
a.load(prop);
} catch (IOException e) {

e.printStackTrace();
}
String URL=a.getProperty(“URL”);
String USR=a.getProperty(“INT_USR”);
String PWD=a.getProperty(“INT_PWD”);
System.out.println(URL);
System.out.println(USR);
System.out.println(PWD);
}catch (FileNotFoundException e){
e.printStackTrace();
}

How to configure Selenium Grid?

Here I noted down some quick steps to configure Selenium Grid on windows. I am assuming that you are aware about selenium and its features. So here we go-

  • Download Selenium Standalone Jar file from here.
  • Dump it somewhere in host and node machines.
  • Open CMD at Host machine and go to location where you have been dumped the jar file.
  • Now run this command Java –jar seleniumserver-standalone_version.jar –role hub.
  • Now open http://localhost:4444/grid/console.
  • Now go to Node machine.
  • Open CMD at Node machine and go to location where you have been dumped the jar file.
  • Run the below commend if machine is remote-

java –jar selenium-server-standalone_version – role webdriver –hubHost HOST MACHINE NAME – “browserName=iexplorer, platform=WINDOWS” –port 5556

  • Run the below commend if machine is same machine where host is running-

java –jar selenium-server-standalone_version – role webdriver – “browserName=iexplorer, platform=WINDOWS” hubHost http://localhost:4444/grid/register –port 5555

How to run Selenium + TestNG script from Command Line?

This is an alternate way to execute our selenium script from command prompt. Here, I am considering few points-

  • Your project is already set-up in Eclipse
  • Project already has testng.xml file.
  • All selenium and other third party jar files are located under project home folder (lib folder).
  • You are able to execute your script by running testng.xml file.

cmd3

If above conditions are matching then very few steps are there to execute same script from command prompt. Follow the below steps-

Open Command Prompt and Go to Project home directory-

CMD

Set the class path and libraries path by running below command-

set classpath=<Project Home Path>\bin;<Project Home Path>\lib\*

cmd1

Now run the testng.xml file by running below command-

java org.testng.TestNG testng.xml—-Make sure “org.testng.TestNG” TestNG word should have ‘T’ and ‘NG’ in caps.

CMD2

I hope it would help people to run testng.xml file from the command prompt.