2
votes

I am using Robot Framework with Selenium2Library for website tests automation. In one of the cases there is a prompt box (pop-up similar to alert, but with an input field in it, see example here) asking for some text. The problem is Robot Framework can only click OK or Cancel (Confirm Action and Choose Cancel On Next Confirmation keywords) on such pop-ups. So the question is: how can I input some text into the prompt box? Is it possible?

In SeleniumLibrary there was a Press Key Native keyword which could press keys without specifying the target element, but it is absent in Selenium2Library. If you know of any alternative - your answer will be much appreciated.

Using AutoIT isn't an option as the tests could be run on different platforms (not only Win).

Am I missing something?

2

2 Answers

4
votes

Selenium2Library doesn't currently have support for inserting text into a prompt. I've opened an issue in the issue tracker for this:

https://github.com/rtomac/robotframework-selenium2library/issues/292

Until it gets added, you can create your own selenium library by subclassing Selenium2Library, and you can add the function to your version.

For example, create a file named "CustomSeleniumLibrary.py", and make it look like this:

# CustomSeleniumLibrary.py
from Selenium2Library import Selenium2Library

class CustomSeleniumLibrary(Selenium2Library):
    def insert_into_prompt(self, text):
        alert = None
        try:
            alert = self._current_browser().switch_to_alert()
            alert.send_keys(text)

        except WebDriverException:
            raise RuntimeError('There were no alerts')

You can then write a test case which uses that library like this:

*** Settings ***
| Library | CustomSeleniumLibrary.py
| Suite Teardown | Close All Browsers

*** test cases ***
| Example of typing into a prompt
| | Open Browser | http://www.w3schools.com/js/tryit.asp?filename=tryjs_prompt
| | Select Frame | iframeResult
| | Click Button | Try it
| | Insert into prompt | my name is Inigo Montoya
| | Confirm action
2
votes

Think it's worth pointing out that this keyword exists now (since SeleniumLibrary 3.0), so there's no longer any need to use a custom script/library. http://robotframework.org/Selenium2Library/Selenium2Library.html#Input%20Text%20Into%20Alert