15

TestNG has been created as an alternative to JUnit in unit testing. While, RobotFramework has been created for acceptance testing. Each has remarkable features: TestNG TestNG is easily integrated into maven cycle and used mostly with Data Driven testing TestNG is pure Java Annotations are easier to understand Test cases can be grouped more easily Parallel ...


8

I think the question should be: Java WebDriver + TestNG Vs Robot. I have worked on both Java + TestNG and RobotFramework. Here is my analysis by points. Ease of use TestNG: You need to know Java & ANT/Maven, loggers and more libraries (depending on your need). Robot: Basic programming language is enough in any language. You can train your manual ...


6

Overview Robot framework is an excellent choice that meets all of your goals. Robot can be used for UI tests (via selenium), REST and SOAP service tests, database tests, and just about any other type of acceptance test. You can even use robot tests to improve your manual testing process. Robot is keyword driven Robot is keyword-driven, which makes it very ...


6

We have found that dealing with third party software in CI/dev environments was a great source of intermittency/failure and pain. So in our CI environments, we always create stub services for third parties. A stub service is basically a fake API service that you control, that behaves the same (or similar) to how the real service does. I would recommend ...


6

I'm afraid the general answer would be "you have to rely on the community" since the code is visible to huge amount of people, a lot of people review it and anyone is free to publish their concerns about the safety of any particular piece of code. This gives quite a strong belief of there is no backdoors added intentionally. This of course does not protect ...


5

It's not a tool that makes you more employable, it's your experience. Knowledge of some tool may give you some advantage but only if you have other skills. No one looks for a guy who can click around in Robot Framework or Selenium or TestNG. A guy who knows how to test (whatever tool is used) - that guy gets the job. Learning RF will not make you less ...


5

I don't think there is a universally agreed-upon set of best practices. In my experience, the very best practice is to create at least one library file per website page (see page object library for one such implementation). I rarely use .robot files for keywords, almost everything my team does is to create keywords in python. I've worked at four different ...


5

Adding to @Alexey R. answer. You should definitely rely on the community for evaluating and finding security and other issues. The same applies not only for test frameworks but also for tools and packages used in your product in production. But that doesn't make you immediately resilient to problems, scroll through NPM's advisories and you'll see critical ...


4

Putting a sleep in a selenium test is generally not the best solution. Selenium has keywords to wait for some condition on a page, such as wait for condition, wait until element is visible, wait until page contains, and wait until page contains element. These are preferable, since the wait will usually be as short as possible. With a fixed-time wait, you may ...


4

Many people's first encounter with automation is to start with a record and playback tool. You quickly learn the limitations of that method because the code it produces is crude and not very maintainable. I do know some people who continue to use a recorder only for the purpose of getting the ID's or other unique identifiers, however there is still a ...


4

The syntax is cumbersome, but there are a couple things you can do. If you don't care about the message returned by the first keyword, you can use Run keyword and return status. This is perhaps the easiest solution, since the keyword will return either True or False. ${status}= Run keyword and return status ... Page should contain element id=...


4

This is a pretty complex one to work through, but you can do it with some data diving as well as well as the information you've given. Time and Labor in your group - assuming you have your automation suite in place, each time it runs, you are running (assuming that the suite runs in under a day) with 3 person-days for a total of 24 hours. The cost to run ...


4

You Can use Wait Until Keyword Succeeds keyword . like: Wait Until Keyword Succeeds 5x 4s click Element xpath=........ Here 5x is how many times you want to execute your action and 4s is your time duration, how frequently you want to wait until next try. Any Many More usage below - *** Settings *** Library ExampleLibrary Library ...


3

At least in Robot Framework User Guide, Getting started it has a nicely detailed installation instructions.


3

I don't have a Robot Framework environment to test right now but I think you can use: BuiltIn.Set test variable ${variable1} value


3

I think the plethora of anti-robot measures might indicate that Google does not want you to interact with it using robots, even if you are a Google Apps customer. From Google support: Automated queries. Google's Terms of Service do not allow the sending of automated queries of any sort to our system without express permission in advance from Google. ...


3

The variable ${CheckboxStatus} is None because the script provided to Execute Javascript doesn't return anything. To fix it, add the return statement: Verify Operator Checkbox ${CheckboxStatus}= Execute Javascript return $('#operators').is(':checked') Run Keyword If '${CheckboxStatus}' == 'false' Check Operator


3

A few corrections which will not directly solve the issues you're facing, but will put you in the right direction. About your robotframework source: The settings names are actually Test Setup and Test Teardown (single words) To use a library, like the Selenium you'd like to, it has to be "imported" - e.g. again in the *** Settings *** section, add it as ...


3

The error should be very self-explanatory: you are passing an argument to the keyword FIRST_NAME ("got 1"), but that keyword doesn't take an argument ("expected 0"). To define your keyword to take an argument use [Arguments] to list the arguments that your keyword accepts. For example: FIRST_NAME [Arguments] ${FIRST_NAME} input text ${FIRST_NAME} ...


3

If you are using SeleniumLibrary with Robot framework, then you use the Press Keys keyword for send ESC key on the currently active browser. If you use the excel format editor, then Press Keys | None | ESC OR if you are using the Text editor, then Press Keys None ESC Let me know if this worked for you.


3

Unfortunately, the best workaround for this is to use prefixes with underscores, as it is mentioned in the User Guide. For example: 01__my_suite.html -> First test case/suite to be executed. 02__another_suite.html -> Second test case/suite to be executed.


3

The Eclipse plugin called RED ([GitHub]1) has support for the standard debugger. More information can be found in the RED GitHub Help pages.


3

DL;DR: It's possible, but you shouldn't. All the tools you've mentioned are essentially test runners, meaning they execute a DSL focused on test code in someway. JUnit and GoogleTest execute methods according to a code-based instruction*, have class/method-level mocking support, and do reporting. On the other hand, Cucumber and Robot are focused on ...


3

You could use Wait until keyword succeeds The keyword will repeat executing until it succeeds you can specific the time to repeat the keyword like so *** Test Case *** Repeat Keyword Test Navigate to menu Home Status ${status} = wait until keyword succeeds 30 minutes 3 minutes Check run status ***Keywrod*** Check run status ${btnValue} Get ...


3

I am not sure what the code you have there do as it is incomplete. So assuming that you want to do data driven testing, use RobotFramework-datadriver: Structure of data file. Installation: pip install --upgrade robotframework-datadriver pip install --upgrade robotframework-datadriver[XLS] Create the excell sheet 1.xlsx and keep it in the same directory as ....


3

DatabaseLibrary is based on DB API 2.0 which supports these database systems: Generic Database Interfaces and APIs. So you won't be able to use this library in your case. I think you best option would be to use a Python module and write your own library that you import into Robot. I don't really know these technologies (hive etc.) much, but it seems you can ...


2

If you can't determine why the browser won't launch, you can make your tests more robust. Make sure to clean the environment during test warmup, add some retry/wait/timeout wrappers around the section that launches the browser, and kill any processes and services that aren't relevant to the test. In order to find out why the browser is crashing, you can ...


2

You haven't described much in terms of "integration" but from your message I can understand that what you are looking for a way to open new defects in your QC/ALM defects module. This can be achieve in multiple ways: Open Test Architecture API - Open Test Architecture API is a COM library that enables you to integrate external applications with ALM/QC. ...


2

It seems like you don't want to report error if element was not found. In such case, the most straight-forward way is to run the keyword and ignore errors if element is not found: Run Keyword And Ignore Error Click Element id=element_id Also, hard-coding sleep intervals can make your tests slow and flaky. Using Wait Until Page Contains is better.


2

Selenium/Python is what we use and are very happy with it. Re #1: You can write tests in pure Python (without Selenium) to test rest/DB and run them using same test runner. Test are just python programs using Selenium libraries or whatever else you need. And there are libraries for anything I ever needed. Re #2: Python is famously easy to read. Our own ...


Only top voted, non community-wiki answers of a minimum length are eligible