<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Jessica Cyrus</title><generator>teletype.in</generator><description><![CDATA[This channel is about all the latest NEWS and update about software testing and QA.]]></description><image><url>https://teletype.in/files/4d/f7/4df7d82b-8142-4b52-afa9-4fc9512fa355.jpeg</url><title>Jessica Cyrus</title><link>https://teletype.in/@softwaretestingqa</link></image><link>https://teletype.in/@softwaretestingqa?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=softwaretestingqa</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/softwaretestingqa?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/softwaretestingqa?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 29 Apr 2026 21:04:52 GMT</pubDate><lastBuildDate>Wed, 29 Apr 2026 21:04:52 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@softwaretestingqa/top-4-automation-testing-books</guid><link>https://teletype.in/@softwaretestingqa/top-4-automation-testing-books?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=softwaretestingqa</link><comments>https://teletype.in/@softwaretestingqa/top-4-automation-testing-books?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=softwaretestingqa#comments</comments><dc:creator>softwaretestingqa</dc:creator><title>Top 4 Best Books on Automation Testing for Automation Testers</title><pubDate>Sat, 28 Mar 2020 07:17:45 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/3f/c3/3fc3dbb2-2cbc-42ef-a747-38f46415a303.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/d5/df/d5df37e9-c617-4b2b-a509-fe3340e2ac5c.png"></img>Books are everyone’s best friends, including the QA Testers. There isn’t any way of improving your skills then by enhancing your skills. As the world of software development and testing is extremely competitive. Therefore, every tester and the developer have to make sure that they keep enhancing their skills in order to stay on the top of their game. If you want to leave a mark in the testing and development industry, then you would have to grasp more and more knowledge. There isn’t any better way of boosting your skills and learning other than reading books related to testing. In this article, we will focus on a few of the top books that the QA Testers should consider learning. ]]></description><content:encoded><![CDATA[
  <figure class="m_retina">
    <img src="https://teletype.in/files/d5/df/d5df37e9-c617-4b2b-a509-fe3340e2ac5c.png" width="960" />
    <figcaption>Books for Automation Testing</figcaption>
  </figure>
  <p>Books are everyone’s best friends, including the QA Testers. There isn’t any way of improving your skills then by enhancing your skills. As the world of software development and testing is extremely competitive. Therefore, every tester and the developer have to make sure that they keep enhancing their skills in order to stay on the top of their game. If you want to leave a mark in the testing and development industry, then you would have to grasp more and more knowledge. There isn’t any better way of boosting your skills and learning other than reading books related to testing. In this article, we will focus on a few of the top books that the QA Testers should consider learning. </p>
  <p><strong>All about Automation Testing </strong></p>
  <p><a href="https://www.nexsoftsys.com/services/automated-software-testing-services.html" target="_blank">Automation Testing Services</a> is creating a buzz in the development and the testing world. Automation testing is adopted worldwide because it is turning out to be quite beneficial for the testing life cycle. Also, there is no doubt about the fact that automation testing is improving the speed of the testing operations and uplifting the quality of the testing process as well. Automation testing is much more than Selenium testing. The companies have started thinking beyond Selenium. Therefore, in 2020 and years after that, the testing world would encourage innovations in automation testing. </p>
  <p><strong>If You Want To Amp up Your QA Testing Skills, Here’re A Few of the Best Books:</strong></p>
  <ol>
    <li><strong>Experiences Of Test Automation: </strong>Case Studies Of Software Test Automation: <a href="https://www.amazon.in/Experiences-Test-Automation-Studies-Software/dp/0321754069" target="_blank">Experiences of Test Automation: Case Studies of Software Test Automation</a> is one of the top books for automation testing. Automation testing has become more popular than any other automation technique it has almost become a necessity now. As the products, systems as well as the applications are constantly becoming bigger and more intricate, therefore, manual testing isn’t turning out to be quite beneficial for the world. Thus, automation turning is turning out to be more preferred than anything. Also, the companies are moving towards agile development, therefore, automation testing will be high on demand. In this book, you will be able to gauge the top automation testing techniques. Also, with the help of the examples and case studies, you would be able to learn more about automation testing. </li>
    <li><strong>Selenium Design Patterns And Best Practices By Dima Kovalenko: </strong><a href="https://aax-us-east.amazon-adsystem.com/x/c/Qro-t307l7zRBrQ8IM7f5jAAAAFwMgIkxgEAAAFKAbeA420/https:/assoc-redirect.amazon.com/g/r/http:/www.amazon.com/exec/obidos/ASIN/1783982705/makithecompsi-20?creativeASIN=1783982705&linkCode=w61&imprToken=Pyr7TAMEpq0ninNj7KATMQ&slotNum=7" target="_blank">Selenium Design Patterns and Best Practices</a> is a world-class book that contains information about Selenium’s design patterns as well as the top practices. It is a superb book which contains tons of useful details about the automation design patterns. Irrespective of the tools that you are or will be using, you can easily grasp more knowledge about Page Object Pattern, Hermetic Design Pattern and Spaghetti Anti-pattern. Therefore, if you want to enhance your automation skills related to the Selenium design patterns as well as the best practices, you should surely consider buying this book. </li>
    <li><strong>How To Break Software: A Practical Guide To Testing: </strong><a href="https://geni.us/nhT3FF" target="_blank">How to Break Software: a Practical Guide to Testing</a> is a topnotch book that contains details about automation testing. As more and more complicated software are being developed, therefore, the testing techniques have to be top-class as well. The world needs better and high quality software testing techniques to test the systems, applications and products. The book contains a modern testing approach, instead of the traditional testing approach. If you want to get some off-script knowledge, then this book is apt for you. You can easily strengthen your skills and enhance your intelligence with this book. You would get a chance to think out of the box by reading the book. The book would allow the readers to get rid of the repetitive testing tasks and adopt modern testing techniques. It even contains some scenarios and cases to learn from. If you want to have practical knowledge about automation testing, then this book is apt for you. </li>
    <li><strong>The Way of the Web Tester – A Beginner’s Guide to Automating Tests – Jonathan Rasmussen: </strong><a href="https://www.ebay.com/p/226710774" target="_blank">The Way of the Web Tester</a> is a beginner’s guide for the testers. It allows the testers to gain more knowledge about automating tests. As the name suggests, this book is perfect for the new testers. If you want to step into the field of testing, then in that case, you should definitely go for this book. The book will help you to first explore the testing world and then enhance your skills. If you have never ever done automation testing before, then in that case, this book will definitely turn out to be quite helpful for you. If you want to automate the testing process, then in that case, you would be required to gain apt knowledge and this is exactly what this book will help you with. This is not just apt for a start, but if you wish to boost your knowledge then also you can get home this book. </li>
  </ol>
  <p><strong>Automation Testing Trends</strong></p>
  <p><a href="https://viblo.asia/p/which-automation-testing-tool-is-one-of-the-toughest-ORNZqGjM50n" target="_blank">Automation testing tools</a> are being transformed massively. There are several new technologies, like artificial intelligence, machine learning and IoT (Internet of Things) that are aiming to transform the world of automation testing as well. The testing industry is up for the next big challenges because of the introduction of the new technologies. In fact, in the coming years, we may even see the use of visual validation automation testing. Additionally, self-healing automation testing is being used as well. So, if you want to boost your skills, then you should consider learning from the books listed above and other tutorials. </p>
  <p>When it comes to automation testing, Selenium is considered as a top tool. It is one of the most preferred automation testing tools, and therefore, many people who want to adopt automation testing as a career choice focus on learning Selenium. Though, that’s definitely not it. You can learn a large number of other tools and techniques as well to enhance your automation testing skills. And, the best way to do so is by going for world-class tutorials and books. Listed above are a few of the best books. </p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@softwaretestingqa/3-technologies-save-time-software</guid><link>https://teletype.in/@softwaretestingqa/3-technologies-save-time-software?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=softwaretestingqa</link><comments>https://teletype.in/@softwaretestingqa/3-technologies-save-time-software?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=softwaretestingqa#comments</comments><dc:creator>softwaretestingqa</dc:creator><title>3 Cutting Edge Technologies That Are Reducing the Time to Market for Your Software</title><pubDate>Wed, 12 Feb 2020 11:46:30 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/94/50/9450983c-f061-448d-a344-346375ca7758.jpeg"></media:content><description><![CDATA[<img src="https://teletype.in/files/5b/3c/5b3c3d15-0fc2-4034-8f99-a3a65deb5f6d.png"></img>You have a great idea for a product. The moment you conceive it, you want to translate it into a fully functional model. You figure out the logistics and hire a team to get the job done. This may or may not be your entrepreneurial breakthrough, but you certainly believe that the idea behind the application software will transform the society and customers would be more than satisfied to have your products with them. ]]></description><content:encoded><![CDATA[
  <p>You have a great idea for a product. The moment you conceive it, you want to translate it into a fully functional model. You figure out the logistics and hire a team to get the job done. This may or may not be your entrepreneurial breakthrough, but you certainly believe that the idea behind the application software will transform the society and customers would be more than satisfied to have your products with them. </p>
  <p>To make it a huge success, you dive down into the software development life cycle and prepare a timeline of events that will follow. You also pick some of the best technologies out there that can help you accomplish the tasks and make you build your dream product. Finally, your team starts working on the application software. It takes time to build things from scratch and you let it happen, without paying attention to <a href="https://webtestingnewsupdates.wordpress.com/2018/11/30/regression-tests-help-you-identify-the-core-flaws-of-software/" target="_blank">software testing</a>.</p>
  <p>And then when you have the released ate finally here, your product hasn’t been under testing pipeline even once. You might have done everything correct to build your dream project, but the only thing you forget is taking note of the time. And before you even realize this, someone has launched a better product than yours and swayed your customers in the wave. </p>
  <p>The point is that heart-crushing things can happen at any given point of time when you’re developing a product. Remember that you’re not the only one targeting a particular segment of customers in the market. There are competitors who are equally eyeing customers and waiting to launch their products at the right time. But, if you don’t pay attention to the time and allocate it adequately between your design, <a href="https://www.nexsoftsys.com/services/software-consulting-services.html" target="_blank">Software Consulting Company</a> and testing team, chances are that you will have to suffer even with a great idea at hand.</p>
  <p>But, all is not lost only if you pay heed to the time to market for your product. It might seem difficult but with the latest cutting edge technologies to the rescue, time to market can be effectively reduced for your product. Let’s take a deeper look at it.</p>
  <h2><strong>Why Reduce the Time to Market?</strong></h2>
  <p>As an organization, what is the purpose of your innovation? For most of them, it is to reach out to their customers and land them with products that assert to their challenges in a more effective manner. The point is that innovation has been the driving force of companies for a long time. But, there is no point of the innovation, if it doesn’t reach the customer at the precise moment when they need it. </p>
  <p>What you need to understand about the time to market is that it is the duration needed for the product to bring it to fruition the time to market for your product begins right from the moment you conceive an idea in your head, then goes onto the whole design cycle, development and launch in the market. This is why organizations focus on streamlining their business processes because it has a direct relationship with the time to market your products. </p>
  <p>Take testing for an example. If you don’t pay attention to testing in the early stages of your product development, you will end up wasting a lot of time in the end of the cycle, ultimately deviating from the ideal time to market. Having said this, organizations are using a new age of testing called as continuous testing to make sure that every single aspect of their application software is checked and authenticated well before in time.</p>
  <p>Time to market is also known as speed to market and is also one of the prime factors in determining innovation for several reasons. Remember that your competitors are out there working as or even harder than you. They are all investing in innovation in various degrees. This means that the more you delay monetizing your improvements or ideas, it gives them an upper hand or chance to pull ahead of you in the market.</p>
  <h2><strong>Technologies Helping Reduce the Time to Market</strong></h2>
  <p>If you are determined to reduce the time to market your products, make sure you start testing your product right from the beginning. This will not shift the burden of the work towards the end of the cycle and make your development pipeline more streamlined. Let’s take a look at trending technologies that are helping organizations reduce the time to market by a significant extent.</p>
  <h3>1. Predictive Analysis</h3>
  <figure class="m_original">
    <img src="https://teletype.in/files/5b/3c/5b3c3d15-0fc2-4034-8f99-a3a65deb5f6d.png" width="594" />
    <figcaption>Via ScienceSoft </figcaption>
  </figure>
  <p>Predictive analysis is one area of cutting edge technology that is helping organizations take a look into the future, without having to spend endless nights analyzing things. When integrated with the testing pipeline, predictive analysis can assist organizations in finding out defects and abnormalities in their applications that may arise in the future. It takes a look at the present data and gives sharp data-backed insights into the future.</p>
  <h3>2. Machine Learning</h3>
  <figure class="m_column">
    <img src="https://teletype.in/files/fe/1a/fe1a2d2c-dbbb-4199-9c68-93c2df0f7e84.png" width="1600" />
  </figure>
  <p>Machine learning is one of the biggest impactful technologies that can significantly help organizations in reducing the time to market their products. Machine learning models can reduce the burden of a quality analyst shoulders to write test scripts manually. Based on the previous performances and existing data, smart models can learn and write test scripts in the least amount of time.</p>
  <h3>3. Artificial Intelligence</h3>
  <figure class="m_retina">
    <img src="https://teletype.in/files/95/bb/95bb5f78-ae62-45dd-91d6-9b238b0200dc.jpeg" width="500" />
    <figcaption>Via Mygreatlearning</figcaption>
  </figure>
  <p>Automation has already hit the software development lifecycle and helped it get better to a great extent. With <strong><a href="https://cyfuture.com/blog/how-ai-can-help-militaries-to-improve-their-electromagnetic-spectrum/" target="_blank">Artificial Intelligence</a></strong> in the picture, automation can be taken to the next level and aid in streamlining the tasks of testers and developers. AI can test applications without leaving any nuances behind, thus guaranteeing a more enhanced experience for the customer. </p>
  <p><strong>Conclusion</strong></p>
  <p>The purpose of technology is to aid human thinking and make them available for it. In spite of such plentiful technologies available in today’s world, organizations are still doing a lot of work manually. This means the time to accomplish a task is greater than what it should be. Only if the adoption of technologies like these is increased, organizations can reduce the time to market their products and reach out to their customers at the precise moment. </p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@softwaretestingqa/Sk5cdNubI</guid><link>https://teletype.in/@softwaretestingqa/Sk5cdNubI?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=softwaretestingqa</link><comments>https://teletype.in/@softwaretestingqa/Sk5cdNubI?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=softwaretestingqa#comments</comments><dc:creator>softwaretestingqa</dc:creator><title>Desired Capabilities in Test Automation with Selenium</title><pubDate>Fri, 24 Jan 2020 09:27:45 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/2f/54/2f54fd4b-e1c4-4c42-a1e7-c0374de787c4.jpeg"></media:content><description><![CDATA[<img src="https://teletype.in/files/2f/54/2f54fd4b-e1c4-4c42-a1e7-c0374de787c4.jpeg"></img>By the term “Desired Capabilities” in automation testing, what comes first in our mind? If the first thing that strikes our mind is might be DesiredCapabilities is a predefined class that can help us set up our test environment according to our test requirement, then our thoughts are actually on target. Moving forward with the test environment, it gives us many capabilities such as browserName, version, platform etc. These capabilities tell the WebDriver on which configuration to run the test on. ]]></description><content:encoded><![CDATA[
  <h2><strong>Overview of Desired Capabilities</strong></h2>
  <figure class="m_original">
    <img src="https://teletype.in/files/2f/54/2f54fd4b-e1c4-4c42-a1e7-c0374de787c4.jpeg" width="700" />
  </figure>
  <p>By the term “Desired Capabilities” in automation testing, what comes first in our mind? If the first thing that strikes our mind is might be DesiredCapabilities is a predefined class that can help us set up our test environment according to our test requirement, then our thoughts are actually on target. Moving forward with the test environment, it gives us many capabilities such as browserName, version, platform etc. These capabilities tell the WebDriver on which configuration to run the test on. </p>
  <p>As mentioned, it is a predefined class in “org.openqa.selenium.remote.DesiredCapabilities” package.</p>
  <p>Desired Capabilities is used when we are running our test on Selenium Grid whether it is a cloud-based Grid or internally structured Grid.</p>
  <p>Selenium Grid is very useful when we want to run our test on different configurations(browserName, version, platform) parallely.</p>
  <p>These capabilities are not only used with Selenium but with Appium as well. <a href="https://www.nexsoftsys.com/services/offshore-qa-testing-services.html" target="_blank">Software Testing Services</a> can even set mobile application testing configuration with the help of Desired Capabilities.</p>
  <p>We store these capabilities as a key/pair values to set the test properties. </p>
  <p>Below are few methods provided by DesiredCapabilities class:</p>
  <ul>
    <li><strong>getBrowserName() : </strong>public java.lang.String getBrowserName()</li>
  </ul>
  <p>This method can be used to get the name of the browser.</p>
  <ul>
    <li><strong>setBrowserName() : </strong>public void setBrowserName(java.lang.String browserName)</li>
  </ul>
  <p>This method can be used to set the name of the browser.</p>
  <ul>
    <li><strong>getVersion() : </strong>public java.lang.String getVersion()</li>
  </ul>
  <p>This method can be used to get the browser version</p>
  <ul>
    <li><strong>setVersion() : </strong>public void setVersion(java.lang.String version)</li>
  </ul>
  <p>This method can be used to set browser version</p>
  <ul>
    <li><strong>getPlatform() : </strong>public Platform getPlatform()</li>
  </ul>
  <p>This method can be used to get platform/operating system name</p>
  <ul>
    <li><strong>setPlatform() :</strong> public Platform setPlatform()</li>
  </ul>
  <p>This method can be used to set platform/operating system name</p>
  <ul>
    <li><strong>getCapability() :</strong> public java.lang.Object getCapability(java.lang.String capabilityName)</li>
  </ul>
  <p>This method is used to get capabilities which are currently used by the system to run automation test.</p>
  <ul>
    <li><strong>setCapability() : </strong>This method is used to set browserName, version, platform/os, browser logging preferences, apk etc.</li>
  </ul>
  <p>To make this clearer, let&#x27;s have a look at the below example:</p>
  <pre>DesiredCapabilities capabilities = new DesiredCapabilities();</pre>
  <pre>capabilities.setBrowserName(&quot;chrome&quot;);</pre>
  <pre> capabilities.setVersion(&quot;79&quot;);</pre>
  <pre> capabilities.setPlatform(Platform.WINDOWS);</pre>
  <pre>WebDriver driver = new RemoteWebDriver (new URL(&quot;http://localhost:4444/wd/hub&quot;), capabilities);</pre>
  <p>The above example would run our test on Windows platform with browser Chrome version 79. Similarly, if you have setup the Similarly Grid, you can run your test on different configurations that too in a parallel manner.</p>
  <p><strong>Desired Capabilities for Chrome</strong></p>
  <p>Desired Capabilities not only help in setting up the browserName, version and platform but also with configuring the browser preferences. These preferences can be:</p>
  <ul>
    <li>headless - Opens browser in headless mode</li>
    <li>start-maximized - maximize the browser</li>
    <li>incognito - opens browser in incognito mode</li>
    <li>disable-popup-blocking - enables the popup to appear</li>
    <li>make-default-browsers - makes chrome as default browser</li>
    <li>disable-gpu - disable graphic processing unit</li>
    <li>window-size=1200x600 - set the desired window size</li>
    <li>verbose - to get chrome test logs</li>
    <li>ignore-certificate-errors - ignores web app certificate errors</li>
  </ul>
  <p><strong>Example:</strong></p>
  <p><code>ChromeOptions options = new ChromeOptions();</code></p>
  <p><code>options.addArguments(&quot;incognito&quot;);</code></p>
  <p><code>options.addArguments(&quot;start-maximized&quot;);</code></p>
  <p><code>DesiredCapabilities capabilities = DesiredCapabilities.chrome();</code></p>
  <p><code>capabilities.setCapability(ChromeOptions.CAPABILITY, options);</code></p>
  <p><code>options.merge(capabilities);</code></p>
  <p><code>WebDriver driver = new ChromeDriver(options);</code></p>
  <p><strong>Code Walkthrough:</strong></p>
  <p>In the above sample code we have “options” as an instance of ChromeOptions class. Using this object, we are adding the arguments to open the chrome browser in incognito and maximized mode. Once we have added the arguments, we need to merge our desired capabilities with chrome options. We can pass the ChromeOptions instance to ChromeDriver constructor.</p>
  <p><strong>Desired Capabilities for Firefox</strong></p>
  <p>Similar to ChromeOptions, we have FirefoxOptions that can help setting up the properties for Firefox browser while running our automation test. To modify the preferences of Firefox browser in our test automation, we have FirefoxProfile. This can help us setting up our own profile with specific bookmarks, plugins etc if required. Initially, when you run our automation test, the browser that gets launched doesn’t have any bookmarks or plugins attached to it. To resolve this Firefox provides an option to create a Firefox profile. Open up a command prompt and type: “firefox.exe –p” to create desired Firefox profile. Your automation test would now run on the recently selected Firefox Profile.</p>
  <p>Coming back to the FirefoxOptions, we can use different properties in this, such as headless, browser size, setBinary.</p>
  <p><strong>Example:</strong></p>
  <p><code>DesiredCapabilities capabilities = DesiredCapabilities.firefox();</code></p>
  <p><code>FirefoxOptions options = new FirefoxOptions();</code></p>
  <p><code>options.setHeadless(true);</code></p>
  <p><code>capabilities.merge(options);</code></p>
  <p><code>WebDriver driver = new FirefoxDriver(capabilities);</code></p>
  <p><strong>Code Walkthrough:</strong></p>
  <p>In the above code sample, we are running our test on Firefox browser in a headless mode. Just to brief, headless browser is a browser that doesn’t have any graphical user interface. It increases the test performance by reducing the execution time.</p>
  <p><strong>Desired Capabilities for Internet Explorer</strong></p>
  <p><strong>Example:</strong></p>
  <p><code>DesiredCapabilities caps = DesiredCapabilities.internetExplorer();</code></p>
  <p><code>caps.setCapability(CapabilityType.BROWSER_NAME, &quot;IE&quot;);</code></p>
  <p><code>caps.setCapability(InternetExplorerDriver.</code></p>
  <p><code>INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);</code></p>
  <p><code>WebDriver driver = new InternetExplorerDriver(caps);</code></p>
  <p><strong>Code Walkthrough</strong></p>
  <p>In the above code, we have used the capability “INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS” which states not to ignore the browser protected mode while launching the automated browser. For more IE desired capabilities, you can have a look at Selenium official <a href="https://selenium.dev/selenium/docs/api/java/org/openqa/selenium/ie/InternetExplorerDriver.html" target="_blank">doc page</a>.</p>
  <p>Below are few capabilities that are widely used with IE:</p>
  <ul>
    <li><strong>ignoreZoomSetting:</strong> Sets the browser zoom level to 100%. The browser zoom level must be set to 100% so that the native mouse events can be set to the correct coordinates.</li>
    <li><strong>enablePersistentHover:</strong> Determine whether to enable persistently sending of mouse move messages to the IE window during mouse hover.</li>
    <li><strong>requireWindowFocus:</strong> Allows the driver focus on IE window before executing any mouse or keyboard event. Initially the value of this capability is false but still performs many native events.</li>
    <li><strong>ignoreProtectedModeSettings: </strong>Determine whether to skip the protected mode check or not which helps from malicious software, code, plugins from being installed.</li>
  </ul>
  <p><strong>Summarizing it all!!</strong></p>
  <p>Desired Capabilities are perfect to be used with Selenium Grid where you can run your test on different configurations. Though the use of Desired Capabilities is very vast, the Selenium 4 has provided an option where you can even avoid the use of Desired Capability and maintain your workflow only with ChromeOptions/FirefoxOptions in some cases. However, it is not actually 100% deprecated; you may face many scenarios while using Selenium 4 where you might need to use Desired Capabilities. If your test scripts are already setup according to Selenium 3 then you would find Desired Capabilities an amazing class to be used with browser options. So, guys give it a try to this interesting topic. Good Luck and Happy Testing :)</p>
  <p>You may like to read more on <a href="https://techblog.nexsoftsys.com/Home/BlogDetails/Java-Gauge-Open-Source-Test-Automation-Framework" target="_blank">JAVA-Gauge: Open Source Test Automation Framework</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@softwaretestingqa/rkFVKDnl8</guid><link>https://teletype.in/@softwaretestingqa/rkFVKDnl8?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=softwaretestingqa</link><comments>https://teletype.in/@softwaretestingqa/rkFVKDnl8?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=softwaretestingqa#comments</comments><dc:creator>softwaretestingqa</dc:creator><title>Integration of Sikuli with Selenium for Interacting with GUI Components</title><pubDate>Wed, 15 Jan 2020 10:28:00 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/4a/1f/4a1f695f-6c11-4eeb-afac-554ee61e03d6.jpeg"></media:content><description><![CDATA[<img src="https://teletype.in/files/4a/1f/4a1f695f-6c11-4eeb-afac-554ee61e03d6.jpeg"></img>Sikuli is an open source tool developed by MIT to interact with flash objects. Flash objects are those that cannot be located with Selenium Locators since they don’t even have their presence in DOM structure of that particular web page. Example of flash objects can be any type of windows based pop-ups, flash games etc.]]></description><content:encoded><![CDATA[
  <h2><strong>Introduction of Sikuli</strong></h2>
  <p>Sikuli is an open source tool developed by MIT to interact with flash objects. Flash objects are those that cannot be located with Selenium Locators since they don’t even have their presence in DOM structure of that particular web page. Example of flash objects can be any type of windows based pop-ups, flash games etc.</p>
  <p>Sikuli is an automation tool that uses <strong>“<a href="https://searchenterpriseai.techtarget.com/definition/image-recognition" target="_blank">Image Recognition</a>”</strong> technology to handle GUI components. Sikuli can also be used for automating window or desktop application. However, it is more preferable when GUI components are more stable and are not changing in the near future.</p>
  <p>Now you might be thinking, if the elements of these GUI components are not present in <a href="https://en.wikipedia.org/wiki/Document_Object_Model" target="_blank">DOM</a> than how these elements would be accessible using Selenium with Sikuli. As mentioned above, Sikuli uses Image Recognition or Visual Image Match method for which elements to be interacted must be taken as an image and stored in a directory. Sikuli will interact with the desired element depending upon the saved web element image we have passed as parameters of various methods.</p>
  <h3><strong>Integration of Sikuli with Selenium</strong></h3>
  <p>Since Selenium and Sikuli are both automation tools, so before proceeding let’s have a quick look at their differentiation:</p>
  <ul>
    <li>Selenium is used for automating only web based applications while Sikuli can be used for automating both desktop and web applications.</li>
    <li>Selenium cannot automate flash objects while the primary purpose of Sikuli is to automate flash objects.</li>
    <li>Selenium doesn’t use Image Recognition technology while Sikuli is totally based on Image Recognition technology.</li>
  </ul>
  <p>Sikuli provides a<strong> Screen class</strong> whose object can be used for accessing all the methods predefined by Sikuli. Below are some commonly used methods:</p>
  <ul>
    <li><strong>click() -</strong> It takes image name as a parameter to perform click operation on desired web element.</li>
    <li><strong>doubleClick() -</strong> It takes image name as a parameter to perform a double click operation on desired web element.</li>
    <li><strong>rightClick() -</strong> It takes image name as a parameter to perform a right click operation on desired web element.</li>
    <li><strong>hover() -</strong> It takes image name as a parameter to hover over a desired web element.</li>
    <li><strong>type() -</strong> It takes image name and input value as a parameter to enter some text in an input field.</li>
    <li><strong>dragDrop() -</strong> It takes two images(source image name and destination image name) as a parameter to drag source image from its source position and drop to its destination position.</li>
    <li><strong>paste() -</strong> It takes image name and copied text as a parameter to get it pasted in an input field.</li>
    <li><strong>find() -</strong> It takes image name as a parameter to find desired web element on a current web page.</li>
  </ul>
  <h3>Let’s have a look at the simple <strong>example using above methods</strong>:</h3>
  <pre>package MyPackage;

import java.awt.AWTException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Screen;
import org.testng.annotations.Test;

public class SikuliTest { 

@Test
public void func() throws FindFailed, InterruptedException, AWTException{ 
WebDriver driver = new ChromeDriver();
 driver.get(&quot;https://www.google.com/&quot;);
 driver.manage().window().maximize();
 Screen screen = new Screen();
 screen.type(&quot;C:\\Users\\Lenovo-I7\\Desktop\\GoogleSearch.JPG&quot;,&quot;who invented selenium&quot;); 
 Thread.sleep(2000);
 screen.click(&quot;C:\\Users\\Lenovo-I7\\Desktop\\sikuli\\GoogleSearchButton.JPG&quot;); 
 Thread.sleep(4000);
 driver.quit();
 } 
}</pre>
  <p><strong>Output:</strong></p>
  <figure class="m_original">
    <img src="https://teletype.in/files/4a/1f/4a1f695f-6c11-4eeb-afac-554ee61e03d6.jpeg" width="628" />
  </figure>
  <p><strong>Code walkthrough:</strong></p>
  <p>In the above code, we have created an object of Screen class. The object has been used to call &quot;type&quot; method which would be giving input to the Google Search field and also used to call “click” method which would be clicking on the Google Search Button to search for the relevant data.</p>
  <p><strong>Note:</strong> Please make sure that you have taken screenshots properly and have passed the correct image name/path in your code otherwise while practicing your script might fail.</p>
  <p><strong>Pattern class: </strong>It is a good practice to use Pattern class along with the Screen class in order to uniquely identify the element with additional attributes. It accepts image path as a parameter.</p>
  <p>Below are some methods predefined in Pattern class:</p>
  <ol>
    <li><strong>similar(similarity) -</strong> It accepts the value between 0 and 1 as a parameter and returns a Pattern object that fall within the specified similarity range.</li>
    <li><strong>exact() -</strong> It has minimum similarity set to 1.0 and returns a Pattern object with exact match of the specified element. </li>
    <li><strong>targetoffset(x,y) -</strong> It accepts x and y coordinated to find the element and performs the defined operation accordingly.</li>
    <li><strong>getFilename() -</strong> returns the filename of an image defined in pattern object.</li>
    <li><strong>getTargetOffset() -</strong> returns the target offset of the Pattern object.</li>
  </ol>
  <p>Now let&#x27;s have a look at the example for using Pattern class along with the Screen class to interact with window pop-up that occur when we try to <strong>upload a file</strong>.</p>
  <figure class="m_original">
    <img src="https://teletype.in/files/89/24/89244920-6f31-405d-a0b5-1a38be6bf305.jpeg" width="628" />
  </figure>
  <p>In the above attached screenshot, since this file upload pop-up is a flash object and could not be located using <a href="https://www.nexsoftsys.com/articles/selenium-locators.html" target="_blank">Selenium Locator</a>, we have used Sikuli here to upload the file. Though this operation can also be done using Robot class, however, this would increase your code length. If the GUI of an element is not expected to be changed in the near future than Sikuli is the right option to access flash objects.</p>
  <p>With the help of Sikuli, we would be giving the image name/path in the &quot;File name&quot; field and after that we would be clicking the &quot;Open&quot; button to upload the same image. </p>
  <p>Here is the screenshot of directory storing 3 images which would be used in the below code.</p>
  <figure class="m_original">
    <img src="https://teletype.in/files/4a/2d/4a2de3a4-0a02-43bd-b064-c7db340dd0dd.jpeg" width="628" />
  </figure>
  <p><strong>Java code sample:</strong></p>
  <pre>
package MyPackage;

import java.awt.AWTException;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Pattern;
import org.sikuli.script.Screen;
import org.testng.annotations.Test;
 
public class SikuliFileUpload {
           
           @Test
           public void func() throws FindFailed, InterruptedException, AWTException{
 
                       System.setProperty(&quot;webdriver.chrome.driver&quot;, &quot;C:\\Users\\Lenovo-I7\\Desktop\\chromedriver.exe&quot;);
 
                       WebDriver driver = new ChromeDriver();
                       
                       driver.get(&quot;https://blueimp.github.io/jQuery-File-Upload/&quot;);
                       driver.manage().window().maximize();
                       
                       Screen screen = new Screen();
                         
                       WebElement addFile = driver.findElement(By.xpath(&quot;//*[@id=\&quot;fileupload\&quot;]/div/div[1]/span[1]&quot;));
                       addFile.click();
                       
                      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
                       
                       Pattern fileName = new Pattern(&quot;C:\\Users\\Lenovo-I7\\Desktop\\sikuli\\fileName.JPG&quot;);
                       String filePath = &quot;C:\\Users\\Lenovo-I7\\Desktop\\sikuli\\GoogleSearchButton.JPG&quot;;
                       screen.type(fileName, filePath);
                       
                       Pattern openFile = new Pattern(&quot;C:\\Users\\Lenovo-I7\\Desktop\\sikuli\\openFile.JPG&quot;);
                       screen.click(openFile);
                       
                       Thread.sleep(2000);
                       
                       WebElement startUpload = driver.findElement(By.xpath(&quot;//span[contains(text(),&#x27;Start upload&#x27;)]&quot;));
                       startUpload.click();
                       
                       Thread.sleep(4000);
                       driver.quit();
           }
}</pre>
  <p><strong>Output:</strong></p>
  <figure class="m_original">
    <img src="https://teletype.in/files/a6/b8/a6b866bf-0236-4721-a49f-384a99850d61.jpeg" width="628" />
  </figure>
  <p><strong>Code walkthrough:</strong></p>
  <p>Here our motive is to test upload feature functionality.We have been using Pattern class to provide the image path for the image of an element we wish to interact with. And then we have used Screen class object to perform various operations for Pattern Object. We would be directing to “Add Files” option to upload an image. Once the Window’s file upload pop-up appears, we have used Sikuli to access this flash object which would further upload an image.</p>
  <p><strong>Summarizing it all!!</strong></p>
  <p>Sikuli is best used for interacting with flash objects which cannot be accessed alone with Selenium locators. For integrating Sikuli with Selenium, we as a <a href="https://www.nexsoftsys.com/services/selenium-automation-testing.html" target="_blank">Selenium Automated Testing Services</a> have used various methods of Screen class and Pattern class. Sikuli is a great tool when you need to interact with web elements on the basis of their visual match. Give it a try, please make sure that you have taken the screenshot of desired web element correctly and given the correct image name/path in your code.</p>

]]></content:encoded></item></channel></rss>