I am trying to use Robot Framework’s -SeleniumLibrary, Custom Library in Python and Custom keyword in Java in the same test case.
I wanted to use the Robot Framework - SeleniumLibrary’s Open Browser keyword to open a browser instance and use the same browser which was opened from Robot Framework to be used by a Python / Java’s custom keyword. But a new browser is getting opened when I try to use these custom keywords.
Sample code of the Python’s Custom Keyword:
def login_using_selenium(self):
driver = webdriver.Chrome()
driver.get("https://abc.com")
element = driver.find_element_by_id("userId")
element.send_keys("33")
element = driver.find_element_by_id("password")
element.send_keys("128")
element.click()
Can anyone help me out in using the same browser in the Robot Framework test case along with RF-SeleniumLIbrary and other Custom Keywords?
i wouldn’t recommend to use it like this!
In your example you just use Selenium itself, without using the capabilities of SeleniumLibrary. Like automatic locator strategy etc.
What you should do:
Import the SeleniumLibrary FIRST in your robot tests and then import your library:
Library SeleniumLibrary
Library YourCustomLib
When you have done this, you have the possibility to get the SeleniumLibrary instance (the object of the library that also knows all open browsers etc) from RobotFramework
To do so, you call the BuiltIn keyword Get Library Instance from your library in Python.
from robot.libraries.BuiltIn import BuiltIn
SL = BuiltIn().get_library_instance("SeleniumLibrary")
class YourCustomLib:
def login_user(self):
SL.press_keys("userId", "33")
SL.press_keys("password", "128")
SL.click_element("login_btn")
Your Robot Test would look like
*** Settings ***
Library SeleniumLibrary
Library YourCustomLib
*** Test Cases ***
Test
Open Browser https://abc.com browser=chrome
Login User
You will not have code completion in Python while calling the keywords from SeleniumLibrary with the SL object. This could be fixed with a generated __init__.pyi file.
But this is another topic.
An alternative to SeleniumLibrary would be the new Browser library.
Thank you for your reply! I really appreciate it. Will try out the Browser library as well. But before that, I would like to know if there are any ways of using the browser instance vice versa.
I already have the Python/ Java code in place, which has it’s browser instance open. And then I would like to perform operations in the Robot Test Suite with the same browser instance.