Automated Testing on website with no elements / Xpath - selenium

Are you aware of any test automation tool that can handle a website that has no elements / xpaths / id's (basically no DOM). If I check DOM Explorer (IE browser) there are only 'script' paths.
Devs told me that those screens are some sort of .NET internal system app (check screenshot)
I would not prefer to use some mouse recording tools or text recognition, but rather go for some script to manage those. Any ideas?

My guess is that in your case the Flash files (which are closed files) are rendered in a container on a webpage.
website that has no elements / xpaths / id's (basically no DOM)
For ex Flash player on Mozilla and Chrome and on ActiveX control in IE. Selenium relies heavily on JS communications (via JSON Wire protocol) and DOM in order to work as expected.
If I had to do it - I would try with Sikuli integration, so I could keep my initial approach and current setup (assuming you already had invested in such).
You didn't say what language you're using, so here and here are JAVA based implementations. I have used successfully C# based sikuli4net in the past to test ActionScript bingo games.

Related

What test strategy should be used to test a chrome extension which relies on the DOM structure on various websites?

I have a chrome extension which supports 10 different websites (and the list is growing). These websites are translation editors where you have to log in and I don't have special test account on all of them. The chrome extension relies on the DOM structure or class names and ids of elements in the DOM to obtain data from the websites and send this data to an API. Also the extension provides the user an UI which is a draggable iframe which is being injected into these supported environments.
My question is, what test strategy would you recommend since I am living on a moving ground (foreign websites can change all the time, DOM can change and things will break)

Options for recording the tasks done in a browser for UI Automation Test

Is there a tool that can record user interactions with DOM elements for usage in creating automated tests (I'm using Codeception and Laravel Dusk but any tool with roots in Selenium is fine). I'm looking for something to record a sequence and get back a list that might include:
Browser navigate to /contact
Focus input "#name"
Enter text "Joe" in input #name
Focus textarea textarea[name=message]
Enter text "Hello world" in textarea textarea[name=message]
Click element input[type=submit]
Browser navigate to /contact?thanks
I see GhostInspector but that is tied directly into a cloud based company and I don't want that, I'd like some degree of control over what the plugin does and be able to record pages not on the public web.
I can see building a tool that recorded every action is non-trivial - mousemove events, focus, text selection, keyboard events, scroll events, etc. Ideally I can say "listen to every focus, click, and keyup event on an input or textarea or button or select or option" and also watch for url changes.
Does such a tool exist? Doesn't matter what browser stack it runs on really, just need the ability for a user, maybe a novice user, to go to a website, hit record, do some actions, and get back a list of what occurred.
The instantaneous downvotes that contend my question is "not about programming" prompt me to improve my question. I don't presume the nature of the tool - it might be programming methods? Ways to use the browser to listen for all events and log them in some manner? Might be a Chrome extension? Might be a framework? Might be a library? I'm looking for the experience of programmers to help me with the programming task I'm trying to accomplish.
Have you tried using the Chrome extension Laravel TestTools?
https://chrome.google.com/webstore/detail/laravel-testtools/ddieaepnbjhgcbddafciempnibnfnakl
Katalon Recorder (Selenium IDE for FF55+)
https://addons.mozilla.org/en-US/firefox/addon/katalon-automation-record/
The straight answer to your question is: Yes there are a number of tools available that are on top of Selenium. I will briefly discuss the top ones that also support browser extensions
1. New Selenium ID(Open Source)- Selenium is possibly the most popular open-source test automation framework for Web applications. The new Selenium IDE is designed to record your interactions with websites to help you generate and maintain site automation, tests, and remove the need to manually step through repetitive takes.
Features:
Recording and playing back tests on Firefox and Chrome.
Organizing tests into suites for easy management.
Saving and loading scripts, for later playback.
Selenium has become a core framework for other open-source test automation tools such as Katalon Studio, Watir, Protractor, and Robot Framework.
FireFox Extension
Chrome Extension
2. Kantu(Open-source)- It is a record & replay tool for automated testing, web automation, automating file uploads and autofill form filling. The visual UI testing commands of Kantu help web designers and developers to verify and validate the layout of websites (and canvas elements).
Features:
Kantu provides with built-in flow control commands like if/else/endif, while/endWhile or GotoIf
FireFox Extension
Chrome Extension
3. Katalon Automation Recorder- Katalon have Katalon Studio which is a completely free desktop application. Recently they launched new Selenium IDE that helps you record actions, capture web elements on web applications, play automated test cases, and do reporting quickly and easily.This Extension was the champion project of Katalon Studio Hackathons contest.
Features:
Record, play, debug with speed control, pause/resume, breakpoints capabilities.
Enjoy fastest execution speed compared to other extensions with Selenium 3 core engine.
Import test data from CSV files for data-driven testing.
Report easily with logs, screenshots capturing, with historical data and analytics from Katalon Analytics.
FireFox Extension
Chrome Extension
Few references for further comparison:
https://medium.com/#briananderson2209/best-automation-testing-tools-for-2018-top-10-reviews-8a4a19f664d2 (comments section will also helpful)
https://a9t9.com/blog/selenium-ide-2018/
https://www.g2crowd.com/categories/test-automation
https://www.qasymphony.com/blog/100-plus-best-software-testing-tools/

Automation of NON GUI application using selenium

I have a web application running on tomcat.My application has no GUI.It processes files on some locations and persists values into the database and produce some output files on some locations.
I need to Automate testing of this application using selenium.This includes file creations, file movements between folders..etc.
My question is
1.Is it possible to automate this non-GUI application using selenium?How?
2.Is it possible to include these file creations, movements and DB values checking using selenium web driver
If you look at the Home Page of Selenium it is clearly mentioned that :
Selenium is the most widely-used open source solution in building Test Automation for Web Applications. The suite of tools provided by Selenium results in a rich set of testing functions specifically catering to the needs of testing of web applications of all types. These operations are flexible and allows many options for locating UI elements and comparing expected test results against actual application behavior.
As your Automation Testing requirement is :
File Creation
File Movements between folders
It seems Selenium may not be the appropiate tool.
A framework built through Perl or Python may better cater to your requirement.
Selenium is created to automate test on UI. You can use on Page Object Model or directly on findelement(or findelements) but you have to give a locator attribute which it can be according to selenium documentation:
id
name
xpath
link_text
partial_link_text
tag_name
class_name
css_selector
So if you have these locators yes, but if you don't, Selenium is not suiting for this task. Maybe you looking for an API tester, Unit tester or what are you trying to accomplish?

Launching selemium scripts from browser for screen capture

I am looking for creating a functional training package for a web based product (more like a screen capture).
However, the requirement is not just to have screen capture, but to have a test mode for the training where we can prompt the user to click on the screen and check if they have done proper flow.
for e.g. A banker will first go through the screen capture to see "how to open an account" in the core banking application . Later user will be presented with a test where user has to click through all the controls and flow.
I have seen selenium being used for authoring good UI automation test cases, so I wanted to explore the possibility of using selenium for creating these training modules
These training modules needs to be launched from intranet application. Is it possible to launch selenium authored UI automation test cases from the browser? I want to stay away from writing any extensions or plugins.
I haven't used selenium and I might be completely off tangent here, so any other suggestion to achieve this using open source tools are welcome.
Without writing any scripts, you may consider downloading Selenium IDE. It has a recording and replay function that may meet your need.
For a fast tutorial, please follow this link.
https://www.youtube.com/watch?v=gsHyDIyA3dg
Hope it helps.

Testing progressively enhanced features with Capybara

I'm using Capybara to test features on a progressively enhanced website. Let's say my feature is to navigate around a hierarchy of locations. The non-javascript version involves getting a new version of the page when we click around on different locations. The enhanced javascript version opens up hidden elements, or loads up new information via Ajax.
I start by writing a test for the non javascript version, which looks something like this:
When I visit the page for "UK"
And I click "London"
Then I should see the information for "London"
Using the default mechanize driver, the test fails, I develop the feature, then the test passes.
I then create an identical test for the javascript version, flagged up with #javascript. It runs the test with the javascript driver, and that test passes because the feature has been implemented. (It's running through the non-js flow). However, I want the javascript version of the test to fail at this point because the feature has not yet been enhanced with Javascript.
So I'm looking for a good strategy for determining whether or not a whole new page has come from the server, and making sure both versions of the feature work. (I plan on integrating this with pushState so testing for a changed URL won't do)
I'm interested to hear other peoples opinions on this - I'm not convinced Cucumber is the right tool for the job, since you're describing features from the perspective of user interaction, and it sounds like your implementation of progressive enhancement will result in essentially the same user interaction.
That aside, I think you may want to consider building in some kind of testing hook to the page itself to help with this. Hard to say what without knowing your exact situation, but maybe one of:
The script-enhanced version of the page could add some element to the DOM, indicating that the enhancements are active, or indicating that the data came from an AJAX request rather than page load.
You could generate a random page identifier (from the server) on every load (e.g. new GUID), embed this into the DOM and assert that it hasn't changed after the interaction (on the enhanced version). This would be a very simple way of achieving your stated goal ("determining whether or not a whole new page has come from the server")
Why does your javascript "enhanced" version work the same as your non-enhanced? Your cucumber tests using #javascript should be testing to ensure the enhancements work.
For instance,
* if the javascript opens a modal dialog instead of following a link to a new page, test for that.
* if the javascript submits a form and updates a value, test for that.
These tests would fail if run without javascript support.