Don't wanna be here? Send us removal request.
Photo
New Post has been published on http://automated-360.com/uft/tools-work-uft/
HPE Tools that work well with UFT
(adsbygoogle = window.adsbygoogle || []).push();
In this post we are listing out some of the tools that works with UFT. These are the tools which you will need to integrate in your testing for some/special needs. for example to conduct mobile testing load testing service testing (which is not an integral part of UFT)
In case you need a quick refresher on UFT –
HPE Unified Functional Testing (UFT) software formerly known as HP QuickTest Professional (QTP) provides functional and regression test automation for software applications and environments. HPE Unified Functional Testing can be used for enterprise quality assurance.
UFT supports keyword and scripting interfaces and features a graphical user interface. It uses the Visual Basic Scripting Edition (VBScript) scripting language to specify a test procedure and to manipulate the objects and controls of the application under test.
UFT was originally written by Mercury Interactive and called QuickTest Professional. Mercury Interactive was subsequently acquired by Hewlett Packard(HP) in 2006. HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package which is currently available from the HP Software Division. The integrated HPE Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface the service layer and the database layer.
HPE UFT latest version is UFT 14.0 here are some of the posts on UFT might be interesting for you.
How to automated Angular applications with UFT?
UI Automation – Have you Started using the new Add-in?
UFT 12 Certification (HP0-M102)
back to the topic here are some of the tools –
HPE Application Lifecycle Management
Application Lifecycle Management is a centralized management system that provides reporting and traceability throughout the application delivery lifecycle.
Connect to you ALM Project in UFT by the Menu Option – ALM > ALM Connection
Read more on HPE ALM
(adsbygoogle = window.adsbygoogle || []).push();
A Sneak Peek at HPE ALM Beta (NextGen ALM)
NextGen ALM – Octane
HPE Mobile Center
HPE Mobile Center provides an end-to-end quality lab of real devices and emulators to help you build a memorable app experience based on extensive real-world mobile app testing live monitoring and user insights.
Know More about HPE Mobile Center
HPE LeanFT
UFT Pro (LeanFT) is fully integrated in standard development IDEs: Visual Studio Eclipse and IntelliJ. It enables the development of test scripts based on standard unit testing frameworks such as NUnit JUnit and TestNG.
LeanFT: A New Monster in automation town
DevOps and Test Automation
HPE Load Runner
HPE LoadRunner is a software testing tool from Hewlett Packard Enterprise. In Sept 2016 HPE announced it is selling its software business including Mercury products to Micro Focus. It is used to test applications measuring system behavior and performance under load.
know more about Load Runner
HPE Service Virtualization
Service Virtualization speeds up delivery times reduces hardware requirements and improves quality by allowing dev and test teams to simulate a service’s behavior without impacting on delivery. HPE’s Service Virtualization software removes the development and testing ‘wait time’ that can slow the delivery of applications. Your teams will easily be able to create realistic simulations of service behavior so you can stay on schedule no matter what. So instead of focusing on constraints in your resources you can focus on service quality such as performance reliability and scalability instead. It’s also packed with benefits for all stakeholders.
Try Service Virtualization
In order to have UFT work with all these tools you need to configure UFT as below –
Open the UFT GUI Testing Options dialog (Tools > Options > GUI Testing).
On the left of the Options dialog box select Test Runs.
Select Allow other HP products to run tests and components.
Thats all for now. Let us know your experiences with other tools that you used with UFT. Please share using the comments section below.
0 notes
Photo
New Post has been published on http://automated-360.com/uft/found-a-flaw-uft-14-test-combinations-generator/
Found a flaw - UFT 14
(adsbygoogle = window.adsbygoogle || []).push();
This is a quick post on what I just found while working with UFT 14.0. Dont worry its not that serious!
There is a spelling mistake in a pop up message which appears as soon as you click on Test Combinations Generator button at toolbar for GUI test. This pop up occurs if you have not defined parameters for the test for which you want to use Test combination generator. Note that defining test parameters is a prerequisite for Test Combination generator.
(adsbygoogle = window.adsbygoogle || []).push();
here is how you can reproduce –
create a new Test
or ensure Global tab has no parameters defined in Data pane
make the GUI test tab in focus
Click on the test combinations generator tool icon
Error message pops up
Admin JavaScript warning:
I'm sorry, your JavaScript appears to be broken. Please use "Check template" in plugin settings, read our troubleshooting guide, troubleshooting guide for programmers or order our pro support and we will get it fixed for you.
Embed
Copy and paste this HTML code into your webpage to embed.
0 notes
Photo
New Post has been published on http://automated-360.com/qtpuft/automate-angular-applications/
How to automate Angular applications with UFT?
(adsbygoogle = window.adsbygoogle || []).push();
Recently software industry has shifted drastically in terms of adopting the refined and improved approaches like Waterfall model to DevOps model or from traditional testing to being involved into early phase of development(shift left). With all these approaches application development technologies has also been changed rapidly. AngularJS is one of the rapidly adopting framework which provides faster development with rich user experience. Now here is the challenge for automation tools to be on top of supporting these changes and have automation tools filled with arsenal to easily take down and automate the tests. It has been observed that automation engineers are moving out from automation tools like Unified Functional testing TestComplete as these tools lag to provide limited support to these rapid changes and every time we see a new tool/framework coming and capture the arena.
What is Protractor?
Protractor is an end-to-end test framework for Angular and AngularJS applications. Protractor runs tests against your application running in a real browser interacting with it as a user would.
see more @ protractortest.org
Protractor is most recommended framework for AngularJS applicationsbut this also comes with limitation and many of the times its bit irritating. Debugging is a great challenge in Protractor for testing of particular module in Protractor you need to run your complete suite again & again. So I thought to move out from the league and try UFT. Check out the all new UFT 14.0. It has been improved a lot and if you leave cost it has all the features that an automation engineer desires. So I tried and can very much say that we can automate angularjs application with UFT.
Before we go in detail to understand how UFT started supporting Angular Based Application the first question that will come is “what add in you will need to select to ensure that Angular JS feature is enabled?“
The answer is no complex: “You need to just select .Net Add in for this.There is no dedicated Add in created for this support.”
Let’s See How to Automate Angular applications
To extend the support for Angular JS support HPE has added few more locator to identify the web objects in it list.These are xpath and css properties which are considered as backbone of Selenium protractor tools.To utilize these properties follow the below steps :
Launch the application in chrome.
Right click on the element for which you need to see the property of the webpage and select the inspect option
After identify the unique property of the element you can try the expath or css in the console. Step 4.After cross checking the xpath or css in the console you can use them in your script as below :
Browser(browsername).Page(PageName).TypeOfObject("css:="&expression) or Browser(browser name).Page(Page Name).TypeOfObject("xpath:="&expression).
To explain the above steps lets take the example of Upworkcom which has the Angular JS components like the “Search the Jobs” text-box.
Before we go ahead the first question most of you is how to confirm the application has angular component or not.For this just right click on the object and check if the element tag has property starting with the keyword “ng”.In the below snapshot you can see that the input tag has an property name as ng-model which tells us that the application is AngularJS application.
Step #1
Launch the application in Chrome.We are going to see how we are going to insert the value in “Find Freelancers” text box highlighted in Red in below picture
Step #2
Right click on the “Find Freelancers” textbox and click on Inspect option which will open the below window panel highlighting the object.
(adsbygoogle = window.adsbygoogle || []).push();
Step #3
For the “Search Freelancers” text box now analyse the blue highlighted part in above picture.We see it has nameid ng-model property.Generally id is unique property for each element.So lets try id to find the element. Below snapshot give the side by side way to writing the xpath and css in console.
xpath : $x(“//input[@id=’q’]”)
css: $x(“input[id=’q’]”)
Step #4
Use the xpath or css in your script as below :
In case of CSS:
objCSSLocator="input[id='q']" Browser("browser").Page("Page").WebEdit("css:="&objCSSLocator).Set "Automated360"
In case of xpath:
objCSSLocator="//button[@id='search-box-el']" Browser("browser").Page("Page").WebEdit("xpath:="&objCSSLocator).Set "Automated360"
In case above two methods don’t work don’t feel left out as UFT has added flexibility for you to fire Javascript directly using the RunScript method.
Browser("browser").Page("Page").RunScript("document.getElementById("btnSecurity").Click();")
The above link will click directly on the web button with id given as ‘btnSecurity’ . GetElementsByID is just one of the way.There are multiple other methods on which object identification take place. For more details refer to w3 schools javascript tutorial
I have tried various permutation and combination and these 3 ways has helped me to overcome all the challenges of automation of angular JS application via UFT.
Try this approach and in case of any issue feel free to contact us. Let us know your views on this. Do you have any other idea or tool which you feel would be easy please comment.
Till then Happy Learning !!!
0 notes
Photo
New Post has been published on http://automated-360.com/qtpuft/whats-new-in-uft-14-quick-overview/
What's new in UFT 14 - Quick overview
(adsbygoogle = window.adsbygoogle || []).push();
I am sure by now you are already aware of the another version of UFT. HPE has released another upgrade of UFT 12.54 to UFT 14.0. with this release of UFT HPE has continued to improvise it with full of features to accommodate current test automation need and trends. There are couple of new addition to UFT feature list along with upgrades and adjustments to the existing functionalities but the main attraction would be the new licensing and three different editions.
What’s New in UFT 14.0
UFT Editions
UFT has now three different editions
UFT ENTERPRISE
UFT PRO
UFT ULTIMATE
LeanFT is now UFT Pro I think HPE decided to make this change to be called as UFT for a better branding. This version continues to provide the strength for angular automated solution continuous testing and integration cross browser support etc.
UFT Enterprise include UFT and UFT Pro the same bundle option which we used to get for 12.54(UFT +LeanFT). Sprinter is the new addition(FREE!) to this bundle to provide efficient manual functional testing.
UFT Ulitmate is filled with different arsenal by looking at the current testing and automation needs which makes is the ultimate and expensive package. It include UFT Pro and UFT Enterprise along with Sprinter Business Process Testing Mobile Center
Is there an impact with this update?
With UFT 14 HPE has introduced a new licensing mechanism based on Device ID but it has kept he backward compatibility. If you already have an existing license you will be able to have it working.
Upgrading to UFT 14
you can directly upgrade to UFT 14 if you are on version 11.5 or later otherwise uninstall and install the new version. You might need to upgrade your license as well based on your current version.
Download UFT 14
Installing UFT 14
refer the below video tutorial from Joe Colantonio
youtube
(adsbygoogle = window.adsbygoogle || []).push();
Test Combinations Generator for GUI Tests
The Test Combinations Generator helps you prepare test configurations by using the parameters in your test and their possible values to create multiple possible data combinations. UFT can then generate them into a test configuration that you can use when running a business process test.
Integration with Microsoft TFS for CI
Now you can integrate your tests with TFS and enable continuous integration using UFT TFS Extension.
Redesigned Record and Run Settings
Along with all other look and feel changes Record and Run setting has been revamped to ease the experience of configuration and settings for applications
Sniper Mode
This is interesting a new capture mode has been introduced. With Sniper mode capture functionality you can capture all the objects in a selected area of your application simply by selecting the area of the application.
New Technology and Framework Support
UFT now supports these new technologies and frameworks:
The latest versions of Firefox and Chrome.
Windows Server 2016
Autopass License Server 9.3
EXT-JS 6.0
SiebelOpenUI 16
Safari 10.12 (“Sierra”)
SAPUI5 1.38
Visual Studio 2015 for the Testing Extensibility SDK
Solution Manager 7.2
Delphi Berlin 10.1
SAP Hybris
here you can find more details and other features on the new version. we are intended to write in depth posts on each of these features so stay tuned and let us know your experiences with the new UFT 14.
Download UFT 14
0 notes
Photo
New Post has been published on http://automated-360.com/qtpuft/uft-new-features/
UFT 12.54 – New Features and Enhancements
(adsbygoogle = window.adsbygoogle || []).push();
HPE has released the fourth minor upgrade for UFT 12.5 release after the subsequent upgrades 12.51 12.52 and 12.53. This release includes some of the improved and enhancement features which include few enhancements for IDE and mobile testing support. The major change comes with this release is trial license period helping people to analyze UFT fitment for their applications now for a longer period before they on-board.
The demo license period is now for 60 days instead of 30 days.
New technology and framework support
Chrome (v54) and Firefox(v49) latest versions
.NET Framework 4.6.1
Service Virtualization 3.82
VMWare ESXi 6.0
Autopass License Server 9.2.1
Oracle Forms 12c
QT 4.8 64-bit applications
SAPUI5 1.34
SAP Ariba
SAP WebDynpro ABAP 7.4 and 7.5
SAP Netweaver 7.4/7.5
Solution Manager 7.2
Terminal Emulators: Attachmate Extra 9.3 SP1 Update 1 Hummingbird 15.00 IBM Personal Communications v. 12.0 Reflection Desktop 16.0 Rumba 9.4 Terminal Emulator
Support for Visual Studio 2012/2013/2015 in the WPF and .NET Extensibility packages
Other Enhancements in UFT 12.54
Mobile Testing Enhancements:
Improved testing for native mobile browsers
Running BPT tests of Mobile Web applications
Test non-packaged hybrid applications
You can now drag and drop test objects from the object spy window directly into test and it gets added into repository.
UFT now supports SAP Business Networks applications running with the new SAPWebExt toolkit
Cross Browser Support is now available for BPT tests
JavFX: UFT supports testing Web applications and Web application objects running inside a WebView object in a JavaFX application.
A new Browser.Quit method improves multiple browser testing.
UFT has added new supported roles for the “role=” property in Web applications
Microsoft WebDriver program has been updated for Microsoft Edge support
Now you can run tests of your Web applications using the PhantomJS toolkit.
UI Automation Enhancements:
UFT’s UI Automation support now includes Maintenance Run Mode.
Use or clear the timeout period when running a test to improve test performance
Select items from a menu object using the menu item index as well as the menu item names.
ALM Integration: You no longer need administrative privileges to interact with connect to or run tests saved on ALM versions 12.53 p1 and higher when UAC is enabled.
API Testing: Now you can use a JKS security certificate when running a test of your Web services in addition to other certificate types such as X509 and Kerberos.
Try UFT for 60 days
Download UFT 12.54
(adsbygoogle = window.adsbygoogle || []).push();
0 notes
Photo

New Post has been published on http://automated-360.com/gherkin-cucumber/cucumber-eclipse-plugin/
Cucumber Plug-in for Eclipse
(adsbygoogle = window.adsbygoogle || []).push();
Cucumber Eclipse Plugin is used by eclipse to understand the basic Gherkin syntax and it works like a syntax highlighter. It highlights all the main syntax in the feature file which makes it more readable and more clearer.
In this post we are going to discuss about the installation of Cucumber Eclipse Plug-in. I have tried to put together a step by step instruction with screenshot hope this will be helpful for you.
10 Steps to Configure Cucumber Eclipse plugin
Installation of Cucumber Eclipse Plugin is easier as it comes as a plugin for Eclipse IDE.
Step #1
Launch the Eclipse IDE and from Help menu click “Install New Software”. A dialog window will be opened. Click on “Add” button.
Step #2
Enter name as “Cucumber” and type “http://cucumber.github.com/cucumber-eclipse/update-site” as location. Click on OK button.
Step #3
Cucumber Eclipse Plugin option will be displayed in the available software list. Check the box and press “Next” button.
Step #4
Select the Cucumber Eclipse Feature Option and click on the Finish button.
Step #5
Select “I accept the terms of the license agreement” radio button and then click on Finish button.
Step #6
Plugin installation will begin. You may or may not encounter a Security warning if in case you do just click OK.
(adsbygoogle = window.adsbygoogle || []).push();
Step #7
In case you encounter a security popup as below just click on the OK button
Step #8
After successful installation of Cucumber plugin you will be ask to restart the Eclipse.Click on Yes button
Step #9
Once the Eclipse has restarted goto New –> File option
Step #10
Enter the filename as XXXX.feature and click on Finish button . Please note file name can be anybut the extension has to be .feature only.
The below Cucumber file will open and you will notice the steps are highlighted
Now you are all set working with Cucumber on Eclipse. In our upcoming posts we will discuss the configuration of cucumber on different IDEs and then automation of Test cases using Cucumber.
Till then Happy Learning!!!!
0 notes
Photo
New Post has been published on http://automated-360.com/gherkin-cucumber/cucumber-workflow/
Cucumber Workflow
(adsbygoogle = window.adsbygoogle || []).push();
How Cucumber works? How does Cucumber interacts with different components of a framework?
Lately my inbox flooded with this question asked by many of you. With this heavy interest on the topic I thought to put together this post so that this question can be answered broadly and others can also get benefited. I have tried to detail as mush as possible please let us know your views and questions if any thorough comments for this post.
I recommend to go through our earlier posts on Cucumber before proceeding on this post. You will have a better idea and can relate appropriately.
It’s important to understand BDD!
Gherkin – Basic Syntax Explained with Example
Lets assume we have written features and scenarios in Gherkin and code has already been written in Step Definition file. Now as soon as execution is kicked off Cucumber reads specification from feature file checks for the scenario that needs to be tested and execute the scenario against the system.
When we say that Cucumber execute the scenario written in feature file in actual it is interaction of feature file with step definition file i.e. mapping of the business-readable language of each step written in feature file with program code written in step definition language.
The subsequent flowchart depicts the test execution using Cucumber.
(adsbygoogle = window.adsbygoogle || []).push();
The diagram starts with the execution of scenario as first step followed by Cucumber reading the first step of scenario written in feature file and will try to find the match for the same in the step definition file.
If its not able to find the match it will stop the execution their itself and will throw an error “Undefined scenario error”.In case it find the corresponding matching it will execute that execute corresponding step definitions code block.
If the definition block throw an exception cucumber will determine whether the step has failed or code has not been written for the specific step.In both the case the execution of the scenario will be terminated at the failure step and execution will proceed to next scenario.
In case of Pass Cucumber will start with the execution of the next step and this will be continuing either till the end of the scenario in case all the steps are getting passed one by one or till the termination of the scenario due to failure of any steps.
This was quick but I hope it must have helped you to get an idea of the Cucumber architecture.
In next post we will discuss on the automation tools that supports cucumber based automation and also the configuration of Cucumber on few of these tools.
Till then –Happy learning!!
Reference: www.seleniumframework.com
0 notes
Photo
New Post has been published on http://automated-360.com/sharepoint/using-ms-sharepoint-data-source-part-3/
Using MS SharePoint as Data Source : Part 3
(adsbygoogle = window.adsbygoogle || []).push();
This is the third and last part of the series: Using MS SharePoint as Data Source. In the earlier posts we learned the basics of SharePoint and the easy way to retrieve data to SharePoint list. In this post we are going to discuss the easiest way of posting data to the SharePoint list.
Posting data to SharePoint can be done in similar way but instead of Query we will use batch element in our CAML.
Batch element provides batch processing of commands within HTTP protocol
<Batch OnError = "Return" | "Continue" ListVersion = "" Version = "" ViewName = ""> <Method> ... </Method> ... </Batch>
To determine the record that needs to be updated we should use the ID column at SharePoint. ID is a default column at SharePoint list which is auto generated for each record. If you don’t see the field you can enable this at list settings.
Batch element should look like below in your request for posting data. Note that the first field name is the ID which determines which records need to be updated. Consecutive fields are the fields for which value should be updated as passed.
(adsbygoogle = window.adsbygoogle || []).push();
<Batch OnError='Continue' ListVersion='1'> <Method ID='1' Cmd='Update'> <Field Name='ID'>1</Field> <Field Name='Grade'>MD </Field> <Field Name='Salary'>80000 </Field> </Method>" "</Batch>"
Rest should be straightforward as explained in the last post. Here is a generic function for your reference.
Function PostData(urlsplistspID spUpdateFeild spUpdateValue) PostData = false batch = "<Batch OnError='Continue' ListVersion='1'>" batch = batch + " <Method ID='1' Cmd='Update'>" batch = batch + " <Field Name='ID'>" & spID & "</Field>" batch = batch + " <Field Name='" & spUpdateFeild & "'>" & spUpdateValue & " </Field>" batch = batch + " </Method>" batch = batch + "</Batch>" request = "<?xml version='1.0' encoding='utf-8'?>" & _ "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xmlns:xsd='http://www.w3.org/2001/XMLSchema'xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>" & _ " <soap:Body>" & _ " <UpdateListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>" & _ " <listName>" & splist & "</listName>" + _ " <updates>" & batch & "</updates>" & _ " </UpdateListItems>" & _ " </soap:Body>" & _ "</soap:Envelope>" Set oXML = CreateObject("Microsoft.XMLHTTP") with oXML .open "Get" url False null null .setRequestHeader "Content-Type" "text/xml; charset=utf-8" .setRequestHeader "SOAPAction""http://schemas.microsoft.com/sharepoint/soap/UpdateListItems" .send request strResponse = .responseText end with if instr(strResponse"<ErrorCode>0x00000000</ErrorCode>") then PostDataToSP = True End Function
The generic functions provided in this series can be directly used in UFT and TestComplete. Tested on UFT 12.52 and TestComplete 11 with SharePoint 2010 and SharePoint 2013. Hope you enjoyed the series let us know your feedback/Comments or questions if any.
0 notes
Photo
New Post has been published on http://automated-360.com/sharepoint/using-ms-sharepoint-data-source-2/
Using MS SharePoint as data source : Part 2
(adsbygoogle = window.adsbygoogle || []).push();
In the last post [ Using MS SharePoint as data source : Part 1 ] we went through the understanding of SharePoint in brief. Now that you have all the information let’s proceed on the scripting part and see how easily we can retrieve and post data to SharePoint.
This a three part series on using sharepoint as data source
Part 1 – Sharepoint and usage Basics Part 2 – Retrieve data from Sharepoint Part 3 – Post data to Sharepoint
We are going to use XMLHTTP object to send the request and XML DOM Document to load and parse the response. Let’s consider a SharePoint list Named as “Employee” which contains Employee data as below. And we need to filter data based on the Grade.
Create Request
The very first thing we need to do is to create the request with query.
Start with the fixed header
<?xml version='1.0' encoding='utf-8'?> <soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xmlns:xsd='http://www.w3.org/2001/XMLSchema'xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
Body Part – use the method GetListItems which provides all the records in the SharePoint list provide the list name which you need to connect.
In this case we need to mention “Employee”
<soap:Body> <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> <listName>Student</listName>"
Query Part – In order to get the required row(s) based on some condition we need to mention the condition in the query part of the request. We explained the CAML query in the last post. In this example we would use to filter the record by Grade let’s say all the employees with Grade as “VP”
(adsbygoogle = window.adsbygoogle || []).push();
<query><Query xmlns=''> <Where> <Eq> <FieldRef Name='Grade'/> <Value Type='Text'>VP</Value> </Eq> </Where> </Query> </query>
The complete Request should like below
<?xml version='1.0' encoding='utf-8'?> <soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xmlns:xsd='http://www.w3.org/2001/XMLSchema'xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> <soap:Body> <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> <listName>Employee</listName> <query><Query xmlns=''> <Where> <Eq> <FieldRef Name='Grade'/> <Value Type='Text'>VP</Value> </Eq> </Where> </Query> </query> </GetListItems> </soap:Body> </soap:Envelope>
Scripting
Let’s proceed on to the scripting part now. As mentioned earlier we will use XMLHTTP to post the request to the service. XML DOM (Document Object Model) components include the XMLHTTP object which provides client-side access to XML documents on remote servers through the HTTP protocol. It exposes a simple API which allows you to send requests and get the response.
Set oXML = CreateObject("Microsoft.XMLHTTP") with oXML .open "Get" url False null null .setRequestHeader "Content-Type" "text/xml; charset=utf-8" .setRequestHeader“SOAPAction""http://schemas.microsoft.com/sharepoint/soap/GetListItems" .send request End With
Here url should be your SharePoint site service url
http://yoursharepointsite/_vti_bin/lists.asmx
and the request is the one we created above
request = "<?xml version='1.0' encoding='utf-8'?>" & _ "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xmlns:xsd='http://www.w3.org/2001/XMLSchema'xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>" & _ " <soap:Body>" & _ " <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>" & _ " <listName>Emploee</listName>" + _ " <query><Query xmlns=''>" & _ " <Where>" & _ " <Eq>" & _ " <FieldRef Name='Grade'/>" & _ " <Value Type='Text'>VP</Value>" & _ " </Eq>" & _ " </Where>" & _ " </Query>" & _ " </query>" & _ " </GetListItems>" & _ " </soap:Body>" & _ "</soap:Envelope>"
Once you post the request you need to get the response out. If you need for reference you can save the response as well. To load the response xml and parse we will use DOM Document
Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0") xmlDoc.async = False xmlDoc.loadXML(oXML.responseText) xmlDoc.save("C:\newResponse.xml") Set elements = xmlDoc.getElementsByTagName("rs:data") xmlDoc.setProperty "SelectionLanguage" "XPath" xmlDoc.async = false xmlDoc.validateOnParse = false xmlDoc.resolveExternals = false xmlDoc.setProperty "SelectionNamespaces" "xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'xmlns:namespace='http://schemas.microsoft.com/sharepoint/soap/'xmlns:rs='urn:schemas-microsoft-com:rowset' xmlns:z='#RowsetSchema'" dim strQuery : strQuery = ".//z:row" Set colItem = xmlDoc.selectNodes(strQuery)
Here You will get all your data from SharePoint in the object – colItem . Further you can loop through all the items and use as required. In this case let’s say we need return the ‘first name’ in an array
For Each objItem in colItem arrNames(n) = objItem.getAttribute("ows_First_x0020_Name") n = n+1 next
Below is a generic function for your reference
Function GetData(spurl splistname spwhere spvalue spRequiredField) Dim request Dim xmlDoc Dim elements request = "<?xml version='1.0' encoding='utf-8'?>" & _ "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xmlns:xsd='http://www.w3.org/2001/XMLSchema'xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>" & _ " <soap:Body>" & _ " <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>" & _ " <listName>" & splistname & "</listName>" + _ " <query><Query xmlns=''>" & _ " <Where>" & _ " <Eq>" & _ " <FieldRef Name='" & spwhere & "'/>" & _ " <Value Type='Text'>" & spvalue & "</Value>" & _ " </Eq>" & _ " </Where>" & _ " </Query>" & _ " </query>" & _ " </GetListItems>" & _ " </soap:Body>" & _ "</soap:Envelope>" Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0") xmlDoc.async = False Set oXML = CreateObject("Microsoft.XMLHTTP") oXML.open "Get" url False null null oXML.setRequestHeader "Content-Type" "text/xml; charset=utf-8" oXML.setRequestHeader "SOAPAction""http://schemas.microsoft.com/sharepoint/soap/GetListItems" oXML.send request xmlDoc.loadXML(oXML.responseText) Set elements = xmlDoc.getElementsByTagName("rs:data") xmlDoc.setProperty "SelectionLanguage" "XPath" xmlDoc.async = false xmlDoc.validateOnParse = false xmlDoc.resolveExternals = false xmlDoc.setProperty "SelectionNamespaces" "xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'xmlns:namespace='http://schemas.microsoft.com/sharepoint/soap/' xmlns:rs='urn:schemas-microsoft-com:rowset' xmlns:z='#RowsetSchema'" dim strQuery : strQuery = ".//z:row" Set colItem = xmlDoc.selectNodes(strQuery) Dim arrNames() Dim n : n=0 For Each objItem in colItem ReDim Preserve arrNames(n + 1) arrNames(n) = objItem.getAttribute(spRequiredField) n= n+ 1 Next GetData = arrNames Set colItem = Nothing End Function
To use this function
url = "http://yoursite/_vti_bin/lists.asmx" arrName = GetData(url"Employee""Grade""VP""ows_First_x0020_Name")
I hope you will find this post useful in the next post we will see the easiest way of posting date or updating data to the sharepoint.
0 notes
Photo
New Post has been published on http://automated-360.com/test-complete/testcomplete-12/
TestComplete 12 has been released
(adsbygoogle = window.adsbygoogle || []).push();
Smartbear has released the new and improved version of TestComplete – version 12. Here are some of the enhancements and Improvement in TestComplete 12.
What’s New and Enhanced in TestComplete 12
Object Search Strategy for Find Methods – This option will help search objects faster. There is an Option to choose between the depth-first and breadth-first search orders for Find methods.
This option is available at Project Property or alternatively you can use at runtime with
Options.Run.ObjectSearchStrategy = searchDepthFirst ' or Consts.searchDepthFirst Options.Run.ObjectSearchStrategy = "Depth-first"
Object search strategy – Specifies the order in which TestComplete traverses the object tree when searching for an object using the Find methods.. Depending on your application changing this option can speed up the search.
Possible values:
Depth-first – Search as deep as possible in each branch of the object tree before moving to the next branch. This is the default setting for projects created in TestComplete versions up to 11.
Breadth-first – Search level by level: start at a given object search its direct child objects then move to the next level child objects and so on. This is the default setting for projects created in TestComplete 12.
you might like to see more on Find Methods
Most useful function in Test Complete – FindAllChildren
Extended Find mechanism of NameMapping in TestComplete
Better troubleshooting of “Object not found” errors – TestComplete 12 now has the ability to give you the hint for a similar object in case of script cannot find an object. You can then update the object from the option provided in the test log.
Looks similar to as we have in UFT – Smart Identification
Extended Support for Text Recognition – TestComplete will be able to recognize text that it cannot recognize by ordinary text recognition using the Direct2D library.
(adsbygoogle = window.adsbygoogle || []).push();
Filtering MSAA objects by window caption – Now you can use window caption along with window class to identify selected objects of specific class using new MSAA engine options.
Windows Scripting Object Wrapper – new wrapped for windows scripting object WScript.Shell allows you to access methods and properties of WScript.Shell with less code. Now you can use WshShell.Run directly.
Support for .Net Framework 4.6.1 – capability to automate .Net applications those are on .Net framework 4.6.1
Improved Code Completion – Code Completion now loads data in a separate thread so it will no longer hang while retrieving object properties and methods. You can continue typing code while the member list is being loaded.
Smartbear team brings stability to TestComplete by fixing various defects reported earlier.
JavaScript Support – Write record run and debug automated tests in JavaScript (ECMA Script 6). Now Javascript appears as another scripting language along with Jscript in TestComplete. Wondering the difference between JavaScript and Jscript? See what John Resig has to say on different versions of Javascript.
Oracle Forms Support – TestComplete 12 supports testing of Oracle Forms 11g and 12c. Now you can record and play back tests for Oracle Forms applets that are embedded into web pages or launched with Java Web Start.
There are few others improvements and features have been added to TestComplete
Web Testing Improvements
Mobile web testing on real devices is now possible
improved integration with QAComplete
improved Support for third party controls like Telerik Q1 2016 Dev Express Sencha Ext JS
Take a look at the full list of improvements for more information.
Free Trial TestComplete 12
TestComplete 12 Documentation
Important to note
If you already have an active maintenance subscription for TestComplete it is added to your account for use automatically
The project file format for this version is different so script created in v 12 is incompatible with the previous versions. This also means that if you will open your script created in earlier versions v12 will convert the scripts and it will no longer can be used in previous versions. It’s recommended to take backup before converting.
0 notes
Photo
New Post has been published on http://automated-360.com/sharepoint/using-ms-sharepoint-data-source/
Using MS SharePoint as data source : Part 1
(adsbygoogle = window.adsbygoogle || []).push();
So far you might have used various means of keeping your test data or have retrieved it from various sources such as flat files MS Excel MS Access SQL etc. Have you ever come across a scenario where you have to pull data from SharePoint? you don’t! No worries it’s always a good thing to learn something new. Maybe this will give you some idea to automate couple more things ���� .
This a three part series on using sharepoint as data source
Part 1 – Sharepoint and usage Basics Part 2 – Retrieve data from Sharepoint Part 3 – Post data to Sharepoint
In this part we will discuss the basic understanding of SharePoint so that it will be easy to proceed further.
Why would I need to connect to SharePoint?
You must be wondering why I need to connect SharePoint when I already have various other ways. Here are some of the scenarios –
Share-point is being used for storing all the artifacts at common place. Your automation require to upload some kind of documentation to the share-point for everyone to refer or its required to fetch a document for your automation purpose.
Data for application is being maintained at share-point – It might be possible that the input data or any other reference data has been maintained at share-point list which you need to retrieve or update data.
Request for automation – There could be a scenario where you want to automate in such a way that your automation will trigger based on the request and data entered at a form at share-point. And your script would act based on the data provided.
Use share-point as reference data to trigger Test Execution – You want to have a common location to select test cases to trigger execution and have the status updated at the same location instead of maintaining separate excel file.
There could be many more scenarios like this. If we just know the basic approach to pull and push data to SharePoint This would solve the other different scenarios.
What is SharePoint?
This is for those who are not aware of SharePoint although I feel everyone does know by now but just in case not!
Microsoft SharePoint is a browser-based collaboration and document management platform. This is widely being used as intranet sites for everyone in an organization for news announcement tasks data documentation and access to variety of information. There are various features which can be utilized to make an easy and effective collaboration.
Although it has some 8-10 components for different purposes. here are the three important things which everyone must know about SharePoint
Sites: A share-point site is a Web site that share-point manages in ways that are compatible with its content-management features. share-point sites can contain many user facing share-point features such as Document Libraries Lists Wikis Blogs and Discussion Boards.
Document Libraries: A Document Library provides a common location or repository for the team to collaborate and keep artifacts which includes document check-in and check-out versioning security and workflow.
Lists: Lists is like MS Excel or MS Access mostly Access that stores data in columns and rows. Almost all of the user facing share-point features stem from Lists.
Click here to learn more …
(adsbygoogle = window.adsbygoogle || []).push();
Connecting SharePoint
Data from SharePoint can be retrieved by any of the following ways
Using Sharepoint Object model – this can be used only on the machine (server) where SharePoint is installed.
Using Sharepoint Lists Service – Connecting SharePoint and retrieving data from SharePoint list web service.
Using OLE DB Connection – connect the way you use to connect databases.
I will not cover the Sharepoint Object Model as part of this post as its out of topic for this post. also this is not something you would normally wont need to cover in your day to day work. In order to the object model to work it is required to have the SharePoint server installed on the same machine where you are working. It is mostly being used by the SharePoint developers to create Web Parts etc.
Using Sharepoint Lists Service
SharePoint provides various methods to work with SharePoint lists via its lists web service. This service can be accessed for your site by setting the web reference as below
http://yoursharepointsite/_vti_bin/Lists.asmx
To retrieve the data we need to post request to service and the data will be contained in the response. This needs to be parsed for further use.
Few things you should know before you proceed.
CAML query – to retrieve the data based on some condition we need to write request xml accordingly. This would be possible easily Collaborative Application Markup Language (CAML). CAML Query is XML based query language and it has predefined tags. For example root element for the query will be defined by the tag – Query.
Within the Query element you have two elements possible:
1. Where – to filter the data
2. OrderBy – to categorize the data
A simple structure of the CAML query is as follows:
<Query> <Where> <Eq> <FieldRef Name=”FieldName” /> <Value Type=”DataType”>Value</Value> </Eq> </Where> <OrderBy> <FieldRef Name=”FieldName” /> <FieldRef Name=”FieldName” /> </OrderBy> </Query>
SharePoint field Naming Convention in Response – Next important thing you should know is the way Sharepoint names the fields or columns internally. Sharepoint manage the field names differently. Just like you see in most of the web URL %20 for the spaces SharePoint uses x0020 for the spaces. For example for field name “First Name” the internal name would be ”Firstx0020Name”. you should use this name for the query.
In the response you will find the same represented as with a suffix “ows” so for First Name field this would be “ows_First_x0020_Name”. In case there are no spaces the name would be “ows_FirstName”.
These are all in terms of a brief basics on Sharepoint I hope yo enjoyed learning this. In the next post we will go into details of connecting to a Sharepoint using the list services method.
0 notes
Photo

New Post has been published on http://automated-360.com/others/she-wasnt-sure-she-said-of-the-shoot-what-was-expected-from/
12 reasons why you should drink Black Coffee every day
(adsbygoogle = window.adsbygoogle || []).push();
Coffee is the single greatest consumable product. It’s responsible for the success of countless professionals. In fact there’re at least a dozen scientific reasons why you should drink coffee every day.So be thankful for your addiction.
Image with share buttons
(adsbygoogle = window.adsbygoogle || []).push();
Sometimes a life that is peaceful calm and uneventful can unexpectedly end up feeling stressed. You might feel a void because you’re not accomplishing anything new. You might start feeling worried about your current situation and wonder what disaster is around the corner.To shake up your life.
Even if the outcome isn’t exactly like you anticipated. As outlined in this article on how to conquer fear and make a change going after something new is as much about the process as it is the result anyway but result.
Some people are fine but If you feel like you’re in a rut and are looking for a positive way to add depth to your life here are some positive ideas.
Vimeo responsive video player
(adsbygoogle = window.adsbygoogle || []).push();
https://vimeo.com/channels/staffpicks/167433178
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing.
(adsbygoogle = window.adsbygoogle || []).push();
YouTube responsive video player
(adsbygoogle = window.adsbygoogle || []).push();
https://youtu.be/A_RPOmUb_Bk
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing. .
There are so many lessons I wish I had learned while I was young enough to appreciate and apply them. The thing with wisdom and often with life lessons in general is that they’re learned in retrospect long after we needed them. The good news is that other people can benefit from our experiences and the lessons we’ve learned.
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing.
It’s up to you to improve your outlook on life and on the world in general. In doing so you’ll put yourself in a better position to make the world a better place.
It takes energy to not get frustrated by the negative we see in the world. It can leave you exhausted if you pay too much attention to it.
0 notes
Photo

New Post has been published on http://automated-360.com/others/13-best-apple-watch-games-of-2016-best-upcoming-apple-watch-games/
The 6 things every driver should know How to Do
(adsbygoogle = window.adsbygoogle || []).push();
The owner’s manual of any car will tell you in the most excruciatingly simplistic step-by-step manner possible how to operate everything from the seatbelts to the trunk lock and how to finely tune the rear headrests with ferocious compulsive precision.
Image with share buttons
(adsbygoogle = window.adsbygoogle || []).push();
Sometimes a life that is peaceful calm and uneventful can unexpectedly end up feeling stressed. You might feel a void because you’re not accomplishing anything new. You might start feeling worried about your current situation and wonder what disaster is around the corner.To shake up your life.
Even if the outcome isn’t exactly like you anticipated. As outlined in this article on how to conquer fear and make a change going after something new is as much about the process as it is the result anyway but result.
Some people are fine but If you feel like you’re in a rut and are looking for a positive way to add depth to your life here are some positive ideas.
Vimeo responsive video player
(adsbygoogle = window.adsbygoogle || []).push();
https://vimeo.com/channels/staffpicks/167433178
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing.
(adsbygoogle = window.adsbygoogle || []).push();
YouTube responsive video player
(adsbygoogle = window.adsbygoogle || []).push();
https://youtu.be/A_RPOmUb_Bk
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing. .
There are so many lessons I wish I had learned while I was young enough to appreciate and apply them. The thing with wisdom and often with life lessons in general is that they’re learned in retrospect long after we needed them. The good news is that other people can benefit from our experiences and the lessons we’ve learned.
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing.
It’s up to you to improve your outlook on life and on the world in general. In doing so you’ll put yourself in a better position to make the world a better place.
It takes energy to not get frustrated by the negative we see in the world. It can leave you exhausted if you pay too much attention to it.
0 notes
Photo
New Post has been published on http://automated-360.com/hpe-alm/alm-octane/
NextGen ALM - Octane
(adsbygoogle = window.adsbygoogle || []).push();
I am sure you must be knowing by now Just in case not.
On June 1st 2016 HPE announce the release of HPE Application Lifecycle Management Octane (HPE ALM Octane). Experience the next generation of Application Lifecycle Management – with support for waterfall projects agile and everything in between.
“HPE ALM Octane is designed to address the challenges associated with the scale required by enterprise software delivery” said Kelly Emo products and solution marketing for HPE Application Delivery Management. “To accelerate application delivery across multiple teams the solution provides visually guided and easily configured business rules and workflow.”
In my previous post “A Sneak Peek at HPE ALM Beta (NextGen ALM)” we provided some details about the new product from HPE which was in beta. Looks like the new name is HPE ALM Octane. Interestingly this has been made available as part of a minor release of the existing HPE ALM 12.53.
(adsbygoogle = window.adsbygoogle || []).push();
“With HPE’s fully web-based platform ALM Octane teams can collaborate easily manage the product delivery pipeline and fully grasp the impact of changes. ALM Octane-powered teams and team leaders are able to make the best-informed project decisions to support the business and manage the quality of the organization.”
ALM 12.53 Release Notes
ALM Octane Help Center
FREE TRIAL
0 notes
Photo

New Post has been published on http://automated-360.com/others/man-in-new-zealand-quits-his-job-to-play-pokemon-go-full-time/
Man in New Zealand quits his job to play Pokemon Go full-time
(adsbygoogle = window.adsbygoogle || []).push();
People are now spending more time playing Pokemon Go than they are on Snapchat Instagram and WhatsApp.
According to data from SimilarWeb the game has also been installed on more Android smartphones in the US than the dating app Tinder.
So it’s no surprise that there have been literally dozens of stories about Pokemon Go since it was released last week.
There are too many to write up so we’ve compiled the best ones.
Image with share buttons
(adsbygoogle = window.adsbygoogle || []).push();
Sometimes a life that is peaceful calm and uneventful can unexpectedly end up feeling stressed. You might feel a void because you’re not accomplishing anything new. You might start feeling worried about your current situation and wonder what disaster is around the corner.To shake up your life.
Even if the outcome isn’t exactly like you anticipated. As outlined in this article on how to conquer fear and make a change going after something new is as much about the process as it is the result anyway but result.
Some people are fine but If you feel like you’re in a rut and are looking for a positive way to add depth to your life here are some positive ideas.
(adsbygoogle = window.adsbygoogle || []).push();
Vimeo responsive video player
(adsbygoogle = window.adsbygoogle || []).push();
https://vimeo.com/channels/staffpicks/167433178
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing.
YouTube responsive video player
(adsbygoogle = window.adsbygoogle || []).push();
https://youtu.be/A_RPOmUb_Bk
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing. .
There are so many lessons I wish I had learned while I was young enough to appreciate and apply them. The thing with wisdom and often with life lessons in general is that they’re learned in retrospect long after we needed them. The good news is that other people can benefit from our experiences and the lessons we’ve learned.
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing.
It’s up to you to improve your outlook on life and on the world in general. In doing so you’ll put yourself in a better position to make the world a better place.
It takes energy to not get frustrated by the negative we see in the world. It can leave you exhausted if you pay too much attention to it.
0 notes
Photo

New Post has been published on http://automated-360.com/others/she-wasnt-sure-she-said-of-the-shoot-what-was-expected-from-3/
10 steps to prepare your home for a Kitten-about Kitten Care
(adsbygoogle = window.adsbygoogle || []).push();
Bringing home a new furry addition to your family is a fun time but there are also many responsibilities that go along with owning a kitten. You have a very tiny life in your hands and there are many dangers to small kittens in just about any home.
Image with share buttons
(adsbygoogle = window.adsbygoogle || []).push();
Sometimes a life that is peaceful calm and uneventful can unexpectedly end up feeling stressed. You might feel a void because you’re not accomplishing anything new. You might start feeling worried about your current situation and wonder what disaster is around the corner.To shake up your life.
Even if the outcome isn’t exactly like you anticipated. As outlined in this article on how to conquer fear and make a change going after something new is as much about the process as it is the result anyway but result.
Some people are fine but If you feel like you’re in a rut and are looking for a positive way to add depth to your life here are some positive ideas.
Vimeo responsive video player
(adsbygoogle = window.adsbygoogle || []).push();
https://vimeo.com/channels/staffpicks/167433178
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing.
(adsbygoogle = window.adsbygoogle || []).push();
YouTube responsive video player
(adsbygoogle = window.adsbygoogle || []).push();
https://youtu.be/A_RPOmUb_Bk
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing. .
There are so many lessons I wish I had learned while I was young enough to appreciate and apply them. The thing with wisdom and often with life lessons in general is that they’re learned in retrospect long after we needed them. The good news is that other people can benefit from our experiences and the lessons we’ve learned.
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing.
It’s up to you to improve your outlook on life and on the world in general. In doing so you’ll put yourself in a better position to make the world a better place.
It takes energy to not get frustrated by the negative we see in the world. It can leave you exhausted if you pay too much attention to it.
0 notes
Photo

New Post has been published on http://automated-360.com/others/launching-the-careers-of-such-svelte-models-as-brooke-shields/
What animals can teach us about being better human beings
(adsbygoogle = window.adsbygoogle || []).push();
If we really pay attention other animals can teach us many important lessons that we may have forgotten in the haste of our normal daily lives. Just by interacting briefly with other creatures we can take away valuable knowledge that we can’t always learn from our fellow humans.
Image with share buttons
(adsbygoogle = window.adsbygoogle || []).push();
Sometimes a life that is peaceful calm and uneventful can unexpectedly end up feeling stressed. You might feel a void because you’re not accomplishing anything new. You might start feeling worried about your current situation and wonder what disaster is around the corner.To shake up your life.
Even if the outcome isn’t exactly like you anticipated. As outlined in this article on how to conquer fear and make a change going after something new is as much about the process as it is the result anyway but result.
Some people are fine but If you feel like you’re in a rut and are looking for a positive way to add depth to your life here are some positive ideas.
Vimeo responsive video player
(adsbygoogle = window.adsbygoogle || []).push();
https://vimeo.com/channels/staffpicks/167433178
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing.
(adsbygoogle = window.adsbygoogle || []).push();
YouTube responsive video player
(adsbygoogle = window.adsbygoogle || []).push();
https://youtu.be/A_RPOmUb_Bk
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing. .
There are so many lessons I wish I had learned while I was young enough to appreciate and apply them. The thing with wisdom and often with life lessons in general is that they’re learned in retrospect long after we needed them. The good news is that other people can benefit from our experiences and the lessons we’ve learned.
Happiness cannot be traveled to owned earned worn or consumed. Happiness is the spiritual experience of living every minute with love grace and gratitude. Positive anything is better than negative nothing.
It’s up to you to improve your outlook on life and on the world in general. In doing so you’ll put yourself in a better position to make the world a better place.
It takes energy to not get frustrated by the negative we see in the world. It can leave you exhausted if you pay too much attention to it.
0 notes