- create a new directory or cd to any existing directory where the tests are present,
mkdir tests && cd tests
- Run the below command in terminal
curl -sSL https://raw.githubusercontent.com/sudharsan-selvaraj/selenium.sh/main/install.sh | bash
This will create a new directory selenium
and downloads the lib into it
- Create a script file
tests.sh
and save it with the below content
#!/usr/bin/env bash
#import selenium
source selenium/selenium.sh
# it will download the respective chromedriver based on installed chrome version
webdrivermanager --browser "chrome"
driver=$(ChromeDriver)
$driver.get "https://www.google.com"
search_input=$($driver.find_element "$(by_name "q")")
$search_input.send_keys "TestNinja"
entered_text=$($driver.execute_script "return arguments[0].value" "$($search_input.get_element)")
echo "Entered search string: $entered_text"
# Support for try/catch specific webdriver exception
try
(
begin
$driver.find_element "$(by_name "invalid name")"
)
catch || {
case $exception_code in
$NO_SUCH_ELEMENT_EXCEPTION)
echo "No such element found ${exit_code}"
;;
esac
}
$driver.quit
- Make sure to assign executable permission to the file
chmod +x script.sh
- Run the script file
./script.sh
-
get
Navigates to given URL
driver=$(ChromeDriver) $driver.get "https://www.google.com"
-
get_session_id
Returns the current session id
driver=$(ChromeDriver) echo $($driver.get_session_id) # prints 1dkb213b8bar5nm20sd6aaaskjasdhd7
-
get_current_url
Returns the current url
driver=$(ChromeDriver) $driver.get "https://www.google.com" echo $($driver.get_current_url) #prints https://www.google.com
-
get_title
Returns the current title of the tab
driver=$(ChromeDriver) $driver.get "https://www.google.com" echo $($driver.get_title) #prints Google
-
get_page_source
Returns the HTML page source
driver=$(ChromeDriver) $driver.get "https://www.google.com" echo $($driver.get_page_source) #prints Google
-
get_screen_shot
Returns the screen shot of the current webpage in base64 format
driver=$(ChromeDriver) $driver.get "https://www.google.com" echo $($driver.get_screen_shot) # prints base64 string
-
refresh
Reloads/refresh the current url
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.refresh
-
back
Navigates to the previously opened webpage from the history
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.get "https://www.github.com" $driver.back echo $($driver.get_current_url) // https://www.google.com
-
forward
Navigates to the next webpage from the history
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.get "https://www.github.com" $driver.back echo $($driver.get_current_url) #prints https://www.google.com $driver.forward echo $($driver.get_current_url) #prints https://www.github.com
-
quit
Quit the current webdriver session
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.quit
-
close
Close the current active window/tab
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.close
-
find_element
Returns the first found element for the given locator
driver=$(ChromeDriver) $driver.get "https://www.google.com" search_text_box=$driver.find_element "$(by_name "q")" search_text_box.send_keys "Test Ninja" $driver.close
It's also possible to chaain multiple locatorsdriver=$(ChromeDriver) $driver.get "https://www.google.com" footer_gmail_link=$driver.find_element "$(by_id "footer")" "$(by_link_text "Gmail")" footer_gmail_link.click $driver.close
-
find_elements
Returns multiple elements found using given locator
driver=$(ChromeDriver) $driver.get "https://www.google.com" anchor_elements=$driver.find_elements "$(by_tagname "a")" echo $(anchor_elements.size) for ((i = 0; i < $($anchor_elements.size); i++)); do echo "$($($anchor_elements.get "$i").get_attribute "href")" done $driver.close
-
get_active_element
Returns the currect element thats in focus
driver=$(ChromeDriver) $driver.get "https://www.google.com" echo $($driver.get_active_element).get_text $driver.close
-
set_window_rect
Change window position and size
Change window position:
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.set_window_rect '{ "x": 100, "y": 200 }' $driver.close
Change window size:
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.set_window_rect '{ "width": 1024, "height": 700 }' $driver.close
-
get_window_x_position
Returns current X position of the window
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.set_window_rect '{ "x": 100, "y": 200 }' echo $driver.get_window_x_position # prints 100 $driver.close
-
get_window_y_position
Returns current Y position of the window
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.set_window_rect '{ "x": 100, "y": 200 }' echo $driver.get_window_y_position # prints 200 $driver.close
-
get_width
Returns current width of the window
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.set_window_rect '{ "width": 1024, "height": 700 }' echo $driver.get_width #prints 1024 $driver.close
-
get_height
Returns current height of the window
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.set_window_rect '{ "width": 1024, "height": 700 }' echo $driver.get_height #prints 700 $driver.close
-
open_new_tab
Opens new Tab on the same window
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.open_new_tab echo $($driver.get_window_handles).size #prints 2 $driver.close
-
open_new_window
Opens a new window
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.open_new_window echo $($driver.get_window_handles).size #prints 2 $driver.close
-
get_window_handle
Returns the window handle of the current tab
driver=$(ChromeDriver) $driver.get "https://www.google.com" echo $driver.get_window_handle $driver.close
-
get_window_handles
Returns the window handle of the current tab
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.open_new_tab $driver.open_new_tab window_handles=$driver.get_window_handles echo $window_handles.size #prints 3 for((i=0;i<$window_handles.size);i++)); do echo $($window_handles.get "${i}") done $driver.close
-
switch_to.window
Switch the focus to specific window handle
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.open_new_tab $driver.open_new_tab window_handles=$driver.get_window_handles echo $window_handles.size #prints 3 for((i=0;i<$window_handles.size);i++)); do $driver.switch_to.window "$($window_handles.get "${i}")" echo "$($driver.get_title)" done $driver.close
-
switch_to.frame
Switch the focus to specific iframe
By Frame index:
driver=$(ChromeDriver) $driver.get "https://www.sitewithiframe.com" # switches to first iframe $driver.switch_to.frame 0 $driver.close
By Frame element:
driver=$(ChromeDriver) $driver.get "https://www.sitewithiframe.com" iframe_ele="$($driver.find_element "$(by_id "frame1")")" $driver.switch_to.frame "$(iframe_ele.get_element)" $driver.close
-
.switch_to.default_content
Switch the focus to parent frame/window
driver=$(ChromeDriver) $driver.get "https://www.sitewithiframe.com" # switches to first iframe $driver.switch_to.frame 0 # # perform some operation # $driver.switch_to.default_content $driver.close
-
window.fullscreen
Activates fullscreen mode
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.window.fullscreen
-
window.maximize
Maximize the current window to desktop width and height
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.window.maximize
-
window.minimize
Minimizes the current window
driver=$(ChromeDriver) $driver.get "https://www.google.com" $driver.window.minimize
Other Api's are yet to be documented
Api's are yet to be documented