Divaksh
Divaksh

Reputation: 47

How to use selenium webdriver methods inside robotframework library?

I want to use selenium webdriver methods in the robot framework library.

def custom_go_to
        driver = BuiltIn().get_library_instance('SeleniumLibrary')
        driver.go_to(url)

The above code from custom library works fine, but I want to use selenium method at the place of robotframework builtin library. When I try to use driver.get(url) it says

'SeleniumLibrary' object has no attribute 'get'

The custom library I created ERP.py looks like

class ERP: 
   @keyword
    def custom_go_to(self, url):
        driver = BuiltIn().get_library_instance('SeleniumLibrary')
        driver.get(url)

And Test Case looks like

***Settings***
Library  SeleniumLibrary
Library  path_to_lib/ERP.py

*** Variable ***
${BROWSER}  |  chrome
${URL}  |  facebook.com

***Test Cases***
Open the browser using an inbuilt keyword and go to a given URL using custom go to using EventFiringWebDriver.
     Open Browser |  about:blank  |  ${BROWSER}
     Custom Go To  |   ${URL}

How can I use Selenium webdriver methods inside the robot framework library?

Upvotes: 3

Views: 3451

Answers (4)

xrc
xrc

Reputation: 52

SeleniumLibrary have a "Get Element Attribute" keyword.

See documentation here: RobotFramework SeleniumLibrary Documentation

Upvotes: 0

Bryan Oakley
Bryan Oakley

Reputation: 386372

The selenium library itself is not a webdriver object, it's just an instance of the SeleniumLibrary class. You need to get a reference to the driver, which is an attribute in the library.

def custom_go_to(url):
    selib = BuiltIn().get_library_instance('SeleniumLibrary')
    selib.driver.get(url)

For more information about interacting with SeleniumLibrary at a low level, see the document Extending SeleniumLibrary in the SeleniumLibrary git repository.

Upvotes: 6

asprtrmp
asprtrmp

Reputation: 1062

Reproduced this as well:

driver.get(url) produces AttributeError: 'SeleniumLibrary' object has no attribute 'get'

An error with an existing keyword, such as driver.go_to(url) produces a different error: No browser is open.

So, use existing keywords or make your own.

Upvotes: -1

john
john

Reputation: 443

'SeleniumLibrary' do not have get attribute. Please refer to Selenium Library Robot Framework for more info.

You should be using

Open Browser    ${LOGIN URL}    ${BROWSER}

Below is example from the link
Example

*** Settings ***
Documentation     Simple example using SeleniumLibrary.
Library           SeleniumLibrary

*** Variables ***
${LOGIN URL}      http://localhost:7272
${BROWSER}        Chrome

*** Test Cases ***
Valid Login
    Open Browser To Login Page


*** Keywords ***
Open Browser To Login Page
    Open Browser    ${LOGIN URL}    ${BROWSER}

Upvotes: 0

Related Questions