Sahi Pro - Action APIs
Sahi's Action APIs simulate user actions on the browser.
Normally Sahi tries to perform actions via Javascript events. This allows play back without the browser being in focus.In rare cases where Javascript events do not work properly, we switch to native events.
Mouse Events
Mouse events simulate the user's mouse based actions.Mouse events are normally triggered at 0,0 coordinates of that element (top left)
Events can be forced to perform at other coordinates by using the _xy API.
_xy
Since Sahi Pro: 3.5Since Sahi OS: 3
_xy($element, $x, $y)
Arguments
| $element | HTML DOM element | Element within which we want to perform the mouse action |
| $x | integer | x co-ordinate in pixels |
| $y | integer | y co-ordinate in pixels |
Details
Specifies the coordinates on element where the event should be fired.
Eg.
Negative values can be given to specify offset from right and bottom.
Eg.
Specifies the coordinates on element where the event should be fired.
Eg.
_click(_xy(_button("id"), 10, 20))
clicks inside the button, 10px from the left and 20 pixels from the top.Negative values can be given to specify offset from right and bottom.
Eg.
_click(_xy(_button("id"), -5, -10))
clicks inside the button, 5px from the right and 10px from the bottom.Combo keys are available with some mouse events to simulate SHIFT click, CTRL click etc.
These are used for multi-selecting on some UIs.
_click
Since Sahi Pro: 3.5Since Sahi OS: 2
_click($element[, $combo])
Arguments
| $element | HTML DOM element | element to click on |
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
Details
_click simulates a user's click on the given element.
_click simulates a user's click on the given element.
_click(_button("Click Me"));
_click(_button("Click Me"), "CTRL"); // clicks with CTRL key pressed
_click(_button("Click Me"), "CTRL|SHIFT"); // clicks with CTRL and SHIFT keys pressed
// With _xy
_click(_xy(_button("Click Me"),4,5)); // Click at coordinates 4,5 pixels inside the button
_doubleClick
Since Sahi Pro: 3.5Since Sahi OS: 2
_doubleClick($element[, $combo])
Arguments
| $element | HTML DOM element | element to double click on |
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
Details
_doubleClick simulates a user's click on the given element.
_doubleClick simulates a user's click on the given element.
_doubleClick(_button("DblClick Me"));
_doubleClick(_button("DblClick Me"), "CTRL"); // double clicks with CTRL key pressed
_doubleClick(_button("DblClick Me"), "CTRL|SHIFT"); // double clicks with CTRL and SHIFT keys pressed
// With _xy
_doubleClick(_xy(_button("DblClick Me"),4,5)); // double click at coordinates 4,5 pixels inside the button
_rightClick
Since Sahi Pro: 3.5Since Sahi OS: 2
_rightClick($element[, $combo])
Arguments
| $element | HTML DOM element | element to right click on |
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
Details
_rightClick simulates a user's click on the given element.
_rightClick simulates a user's click on the given element.
_rightClick(_button("Right Click Me"));
_rightClick(_button("Right Click Me"), "CTRL"); // right clicks with CTRL key pressed
_rightClick(_button("Right Click Me"), "CTRL|SHIFT"); // right clicks with CTRL and SHIFT keys pressed
// With _xy
_rightClick(_xy(_button("Right Click Me"),4,5)); // right click at coordinates 4,5 pixels inside the button
warning
_rightClick will not bring up the browser's context menu.
_mouseDown
Since Sahi Pro: 3.5Since Sahi OS: 3
_mouseDown($element[, $isRight[, $combo]])
Arguments
| $element | HTML DOM element | element to perform mouse down on |
| $isRight | boolean optional | Set to true for a left-hand mouse, default false |
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
Details
_mouseDown simulates a mousedown on the given element.
_mouseDown simulates a mousedown on the given element.
_mouseDown(_button("Mouse Down"));
_mouseDown(_button("Mouse Down"), true); //mouseDown for a left-hand mouse
_mouseDown(_button("Mouse Down"), false, "CTRL"); //mouseDown with CTRL key pressed
_mouseDown(_button("Mouse Down"), false, "CTRL|SHIFT"); //mouseDown with CTRL and SHIFT keys pressed
_mouseUp
Since Sahi Pro: 3.5Since Sahi OS: 3
_mouseUp($element[, $isRight[, $combo]])
Arguments
| $element | HTML DOM element | element to perform mouse up on |
| $isRight | boolean optional | Set to true for a left-hand mouse, default false |
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
Details
simulates a mouseup on the given element.
simulates a mouseup on the given element.
_mouseup(_button("Mouse up"));
_mouseup(_button("Mouse up"), true); // mouseup for a left-hand mouse
_mouseup(_button("Mouse up"), false, "CTRL"); // mouseup with CTRL key pressed
_mouseup(_button("Mouse up"), false, "CTRL|SHIFT"); // mouseup with CTRL and SHIFT keys pressed
_mouseOver
Since Sahi Pro: 3.5Since Sahi OS: 2
_mouseOver($element[, $combo])
Arguments
| $element | HTML DOM element | element to perform hover over or move the mouse over. |
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
Details
_mouseOver simulates mouse hovering on the given element.
_mouseOver simulates mouse hovering on the given element.
_mouseOver(_button("Click Me"));
_mouseOver(_button("Click Me"), "CTRL"); // mouseOver with CTRL key pressed
_mouseOver(_button("Click Me"), "CTRL|SHIFT"); // mouseOver with CTRL and SHIFT keys pressed
_check
Since Sahi Pro: 3.5Since Sahi OS: 2
_check($checkBoxOrRadioElement)
Arguments
| $checkBoxOrRadioElement | HTML DOM element | The check box or Radio element to check |
Details
Checks the given checkbox or radio element. If already checked, this API does not do anything.
Checks the given checkbox or radio element. If already checked, this API does not do anything.
_uncheck
Since Sahi Pro: 3.5Since Sahi OS: 3
_uncheck($checkBoxElement)
Arguments
| $checkBoxElement | HTML DOM element | The check box to uncheck |
Details
Unchecks the given checkbox. If already unchecked, this API does not do anything.
Unchecks the given checkbox. If already unchecked, this API does not do anything.
_setSelected
Since Sahi Pro: 3.5Since Sahi OS: 2
_setSelected($element, $optionToSelect[, $isMultiple])
Arguments
| $element | HTML DOM element | Select dropdown |
| $optionToSelect | string|integer|array of string and/or int | Option's text, id or index; can also pass an array of options for multi-select |
| $isMultiple | boolean optional | set isMultiple true for multiselect |
Details
Selects one or more elements in a select dropdown.
Selects one or more elements in a select dropdown.
_setSelected(_select("Age"), "28"); // Selects the option visible as "28" in a select box
_setSelected(_select("color"), 1); // Selects the second option in a select box
_setSelected(_select("color"), "red"); // Selects red in a multiselect box
_setSelected(_select("color"), "blue", true); // Selects blue also in the multiselect box
_setSelected(_select("color"), ["red", "blue"]); // Unselects previous and selects red and blue in a multiselect box
_setSelected(_select("color"), [1,2,3]); // Unselects previous and selects the second, third and fourth options in a multiselect box
_setSelected(_select("color"), ["green", "yellow"], true); // Keeps previous options selected and selects "green" and "yellow" also
_dragDrop
Since Sahi Pro: 3.5Since Sahi OS: 2
_dragDrop($dragElement, $dropElement)
Arguments
| $dragElement | HTML DOM element | HTML element to be dragged |
| $dropElement | HTML DOM element | HTML Element where the dragged element will be dropped |
Details
Simulates a drag and drop action
Simulates a drag and drop action
// Drag the item and drop it in the shopping cart
_dragDrop(_image("item"), _byId("ShoppingCart"));
// Drag the item and drop it at coordinates 20,40 pixels inside shopping cart
_dragDrop(_image("item"), _xy(_byId("ShoppingCart"), 20, 40));
_dragDropXY
Since Sahi Pro: 3.5Since Sahi OS: 2
_dragDropXY($dragElement, $x, $y[, $isRelative])
Arguments
| $dragElement | HTML DOM element | HTML Element to be dragged |
| $x | integer | x coordinate of drop point on the page |
| $y | integer | y coordinate of drop point on the page |
| $isRelative | boolean optional | Specifies whether the coordinates are relative to current position of draggable element. |
Details
_dragDropXY simulates a drag and drop action. It drags the element and drops it at the given x, y coordinate.
_dragDropXY simulates a drag and drop action. It drags the element and drops it at the given x, y coordinate.
// If _image("item") is located at coordinates (50, 150)
// Drag the item and drop it at the coordinate (100, 300)
// The end result is that the element's coordinates will be at (100, 300)
_dragDropXY(_image("item"), 100, 300);
// Drag the item and drop it at the coordinate (50+100, 150+300)
// The end result is that the element's coordinates will be at (150, 450)
_dragDropXY(_image("item"), 100, 300, true);
Touch Events
_tap
Since Sahi Pro: 5.1.0Since Sahi OS: NA
_tap($element[, $count])
Arguments
| $element | HTML DOM element | HTML form element that needs to be tapped |
| $count | integer optional | number of times the element needs to be tapped. Default value is 1. |
Details
Simulates a tap event(touch event) on the HTML element
Simulates a tap event(touch event) on the HTML element
_touch
Since Sahi Pro: 5.1.0Since Sahi OS: NA
_touch($element[, $count])
Arguments
| $element | HTML DOM element | HTML form element on which we need to fire a touch event |
| $count | integer optional | number of times the element needs to be touched. Default value is 1. |
Details
Simulates a touch event on the HTML element
Simulates a touch event on the HTML element
_touchStart
Since Sahi Pro: 5.1.0Since Sahi OS: NA
_touchStart($element)
Arguments
| $element | HTML DOM element | HTML form element on which we need to fire a touch start event |
Details
Simulates a touch start event on the HTML element
Simulates a touch start event on the HTML element
_touchEnd
Since Sahi Pro: 5.1.0Since Sahi OS: NA
_touchEnd($element)
Arguments
| $element | HTML DOM element | HTML form element on which we need to fire a touch end event |
Details
Simulates a touch end event on the HTML element
Simulates a touch end event on the HTML element
_touchCancel
Since Sahi Pro: 5.1.0Since Sahi OS: NA
_touchCancel($element)
Arguments
| $element | HTML DOM element | HTML form element on which we need to cancel the ongoing touch event |
Details
Simulates a touch cancel event on the HTML element
Simulates a touch cancel event on the HTML element
_touchMove
Since Sahi Pro: 5.1.0Since Sahi OS: NA
_touchMove($element, $moveX, $moveY[, $isRelative])
Arguments
| $element | HTML DOM element | HTML form element which we need to move/drag. |
| $moveX | integer | number of pixels the element needs to move in x-direction |
| $moveY | integer | number of pixels the element needs to move in y-direction |
| $isRelative | boolean optional | if true, the element will move relative to the current location of the element.if false, element will move to the position where the horizontal coordinate and vertical coordinate are 'moveX' and 'moveY'. Default value is true. |
Details
Simulates a touch move event on the HTML element
Simulates a touch move event on the HTML element
_swipe
Since Sahi Pro: 5.1.0Since Sahi OS: NA
_swipe($element, $moveX, $moveY, $isRelative)
Arguments
| $element | HTML DOM element | HTML form element on which we need to simulate swipe event. |
| $moveX | integer | number of pixels the element needs to move in x-direction |
| $moveY | integer | number of pixels the element needs to move in y-direction |
| $isRelative | boolean | if true, the element will move relative to the current location of the element. If false, element will move to the position where clientX and clientY are moveX and moveY. |
Details
Simulates a touch move event on the HTML element
Simulates a touch move event on the HTML element
Keyboard Events
_setValue
Since Sahi Pro: 3.5Since Sahi OS: 2
_setValue($element, $value)
Arguments
| $element | HTML DOM element | HTML form element whose value is to be set |
| $value | string | Value to be set |
Details
Simulates text entry into html form elements (textbox like elements and textareas)
The sequence of events performed are
Focus
Enter Text
Remove focus
Simulates text entry into html form elements (textbox like elements and textareas)
The sequence of events performed are
Focus
Enter Text
Remove focus
// populates textbox identified as _textbox("user") with Ram
_setValue(_textbox("user"), "Ram");
_keyDown
Since Sahi Pro: 3.5Since Sahi OS: 2
_keyDown($element, $charInfo[, $combo])
Arguments
| $element | HTML DOM element | Any HTML element |
| $charInfo | charInfo | charInfo can be:
|
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
Details
Simulates pressing down a key on the given element.
Simulates pressing down a key on the given element.
_keyDown(document.body, 'a');
_keyDown(document.body, 98);
_keyDown(document.body, [13,13]);
_keyDown(document.body, 'a', "CTRL");
_keyUp
Since Sahi Pro: 3.5Since Sahi OS: 2
_keyUp($element, $charInfo[, $combo])
Arguments
| $element | HTML DOM element | Any HTML element |
| $charInfo | charInfo | charInfo can be:
|
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
Details
Simulates releasing a key press on the given element.
Simulates releasing a key press on the given element.
_keyUp(document.body, 'a');
_keyUp(document.body, 98);
_keyUp(document.body, [13,13]);
_keyUp(document.body, 'a', "CTRL");
_keyPress
Since Sahi Pro: 3.5Since Sahi OS: 2
_keyPress($element, $charInfo[, $combo])
Arguments
| $element | HTML DOM element | Any HTML element |
| $charInfo | charInfo | charInfo can be:
|
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
Details
Simulates pressing a key on the given element. Does keyDown and keyUp together.
Simulates pressing a key on the given element. Does keyDown and keyUp together.
_keyPress(document.body, 'a');
_keyPress(document.body, 98);
_keyPress(document.body, [13,13]);
_keyPress(document.body, 'a', "CTRL");
_type
Since Sahi Pro: 3.5Since Sahi OS: 2
_type($element, $text)
Arguments
| $element | HTML DOM element | element in which the text is to be typed |
| $text | string | text to be typed |
Details
Types the text into the element. Different from _setValue. _type does not bring or remove focus from element.
Types the text into the element. Different from _setValue. _type does not bring or remove focus from element.
_type(_textbox("user"), "am");
Focus Events
_focus
Since Sahi Pro: 3.5Since Sahi OS: 2
_focus($element)
Arguments
| $element | HTML DOM element | Any HTML element to focus on |
Details
Brings focus to given element.
Brings focus to given element.
_focus(_textbox("username"));
_removeFocus
Since Sahi Pro: 3.5Since Sahi OS: 3
_removeFocus($element)
Arguments
| $element | HTML DOM element | Any HTML element to remove focus from |
Details
Similar to clicking somewhere else on the window to remove focus from given element.
Forces onblur events to be called.
Blur happens automatically during Sahi's script execution.
This API is rarely used explicitly. Same as _blur.
Similar to clicking somewhere else on the window to remove focus from given element.
Forces onblur events to be called.
Blur happens automatically during Sahi's script execution.
This API is rarely used explicitly. Same as _blur.
_removeFocus(_textbox("username"));
_blur
Since Sahi Pro: 3.5Since Sahi OS: 3
_blur($element)
Arguments
| $element | HTML DOM element | Any HTML element to remove focus from |
Details
Similar to clicking somewhere else on the window to remove focus from given element.
Forces onblur events to be called.
Blur happens automatically during Sahi's script execution.
This API is rarely used explicitly. Same as _removeFocus.
Similar to clicking somewhere else on the window to remove focus from given element.
Forces onblur events to be called.
Blur happens automatically during Sahi's script execution.
This API is rarely used explicitly. Same as _removeFocus.
_blur(_textbox("username"));
Text Selection
Selecting text for manipulation (like selecting text in a Rich Text Editor to change font to bold)_selectRange
Since Sahi Pro: 5.1.0Since Sahi OS: 5.0
_selectRange($element, $rangeStart, $rangeEnd)
Arguments
| $element | HTML DOM element | element to select on |
| $rangeStart | integer | start position of selection |
| $rangeEnd | integer | end position of selection |
Details
Example:
Example:
// If the text was "abcdefghij"
_selectRange(_rte(1), 2, 4); // selects text cd
var $text = _getSelectionText(); // $text = "cd"
_selectRange(_rte(1), 2, 2); // places the cursor at 3rd position without any selection
_selectTextRange
Since Sahi Pro: 5.1.0Since Sahi OS: 5.0
_selectTextRange($element, $searchText[, $position])
Arguments
| $element | HTML DOM element | element to select on |
| $searchText | string | text to search for and select. The text can be a pure string or a regular expression with an index |
| $position | string optional | can be "before" or "after". if specified, the selection moves to the start or end of searchText. |
Details
Example:
Example:
//Given a sample string
//This bright red apple is sweeter than that dull red apple
_selectTextRange(_rte(1), "red apple"); // selects the first red apple
_selectTextRange(_rte(1), "red apple[1]"); // selects the second red apple
_selectTextRange(_rte(1), "/ap.le/[1]"); // selects the second apple
var $text = _getSelectionText(); // $text = "apple"
_selectTextRange(_rte(1), "/ap.le/[1]", "before"); // moves the cursor before the second apple, with no selection
_selectTextRange(_rte(1), "/ap.le/[1]", "after"); // moves the cursor after the second apple, with no selection
Page Navigation
_navigateTo
Since Sahi Pro: 3.5Since Sahi OS: 2
_navigateTo($url[, $forceReload])
Arguments
| $url | string | URL to navigate to. Can be relative to current page. |
| $forceReload | boolean optional | If the current page URL is same as url, Sahi will not reload the page by default. Set to true to force reload when urls are same. |
Details
_navigateTo loads the given url in the top frame of the window.
To load in a popupWindow, use _selectWindow to select that window first.
_navigateTo loads the given url in the top frame of the window.
To load in a popupWindow, use _selectWindow to select that window first.
// If current page is not http://sahi.co.in/demo/
_navigateTo("http://sahi.co.in/demo/"); // Will navigate to this page.
// If current page is itself "http://sahi.co.in/demo/"
_navigateTo("http://sahi.co.in/demo/"); // will do nothing
_navigateTo("http://sahi.co.in/demo/", true); // Will force navigation to this page.
_selectWindow("popWin");
_navigateTo("http://sahi.co.in/demo/"); // loads in the popup window.
info
To force reload of the current page without knowing the URL, you may use
_call(top.location.reload()); // reload via Javascript
// or
_windowAction("refresh"); // native event
Waits
_wait
Since Sahi Pro: 3.5Since Sahi OS: 2
_wait($timeout[, $condition])
Arguments
| $timeout | integer | time in milliseconds to wait for |
| $condition | Sahi expression optional | condition to wait for. If specified, _wait will return if either the condition is met or if the time elapsed has exceeded timeout, whichever comes first. |
Details
Forces script to wait for given time or given condition to be true, which ever comes first
Forces script to wait for given time or given condition to be true, which ever comes first
_wait(1000); // Will stop execution for a second
// Wait till div by id "ajaxConfirm" is populated for max 5 seconds.
_wait(5000, _getText(_div("ajaxConfirm"))!="");
// Wait till button becomes visible
_wait(5000, _isVisible(_button("Confirm")));
// Wait till "Loading ..." message disappears
_wait(1000); // may take a second before that message appears.
_wait(5000, !_isVisible(_div("Loading ..."))); // wait max 5 seconds for it to disappear.
Native Events
In rare cases where Javascript events do not work properly, we switch to native events. These events are created bythe underlying Operating System. The browser needs to be in focus for this to work properly.
These APIs only work if the browser and Sahi's proxy are on the same system. So these APIs are not available on mobile devices.
Some native events may not work on all platforms.
For native events, the window and element SHOULD be in focus.
Use
When using suites, do one of these
Use
_focusWindow()
before using native events in a script.When using suites, do one of these
-
isolate all scripts with native events into its own suite, and run that suite using 1 thread only.
-
OR
Use _lock and _unlock in scripts where contention for window focus is possible.
_typeNative
Since Sahi Pro: 5.0Since Sahi OS: NA
_typeNative($text)
Arguments
| $text | string | Text to type |
Details
Types the text using native events
Types the text using native events
_focus(_textbox("user"));
_focusWindow();
_typeNative("Ram");
_typeKeyCodeNative
Since Sahi Pro: 5.0Since Sahi OS: NA
_typeKeyCodeNative($keyCode)
Arguments
| $keyCode | integer | Key Code of keyboard key to be pressed. |
Details
Presses the keyboard key for given keyCode
java.awt.event.KeyEvent defines keyCodes as constants which can be passed to this function.
Presses the keyboard key for given keyCode
java.awt.event.KeyEvent defines keyCodes as constants which can be passed to this function.
_focusWindow();
_setValue(_textbox("search"), "coffee");
_typeKeyCodeNative(java.awt.event.KeyEvent.VK_ENTER); // Press enter key
_focusWindow
Since Sahi Pro: 4.3Since Sahi OS: NA
_focusWindow()
Arguments
| None |
Details
Brings the window above all other windows.
It is generally needed before using other native events or before taking screen shots
Works only on Windows Operating Systems currently. On Mac and Linux, does nothing.
For popup windows, use _selectWindow first.
Brings the window above all other windows.
It is generally needed before using other native events or before taking screen shots
Works only on Windows Operating Systems currently. On Mac and Linux, does nothing.
For popup windows, use _selectWindow first.
_focusWindow(); // bring window into focus.
_takeScreenShot();
// For popup windows, use _selectWindow first
_selectWindow("popWin"); // target further statements at popWin window
_focusWindow(); // bring popup window into focus.
_takeScreenShot();
_windowAction
Since Sahi Pro: 5.0Since Sahi OS: NA
_windowAction($action[, $width[, $height]])
Arguments
| $action | string | Action can be one of
|
| $width | integer optional | Specifies the width of the browser window while using the 'resize' option. |
| $height | integer optional | Specifies the height of the browser window while using the 'resize' option. |
Details
Performs various window level actions. Current works only on Windows Operating Systems.
On Mac and Linux does nothing.
For popup windows, use _selectWindow first.
Performs various window level actions. Current works only on Windows Operating Systems.
On Mac and Linux does nothing.
For popup windows, use _selectWindow first.
_windowAction("focus"); // focus window. Same as _focusWindw
_windowAction("maximize"); // mazimize window.
_windowAction("minimize"); // minimize window.
_windowAction("restore"); // restore window.
_windowAction("refresh"); // refresh window.
_windowAction("resize",500,300); // resize the window with the given width and height.
// maximizing a popup window
_selectWindow("popWin"); // first select the popWin window to target further steps on.
_windowAction("maximize");
To set delay for a window action API, please do the following- Search and edit the following section in sahi.properties
[SAHI_INSTALL_PATH\config\sahi.properties]
window_action_api.wait_after_unique_title_set=300 // waits for 300ms after unique title set.
window_action_api.wait_before_title_revert=200 // waits for 200ms before unique title revert.
window_action_api.wait_after_unique_title_revert=500 // waits for 500ms after unique title revert.
_clickNative
Since Sahi Pro: 6.0.0Since Sahi OS: NA
_clickNative($element[, $combo[, $isRight[, $isDouble]]])
Arguments
| $element | HTML DOM element | Element that has to be clicked. |
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
| $isRight | boolean optional | If true, the click is a right click |
| $isDouble | boolean optional | If true, the click is a double click |
Details
Simulates a native click event on the element.
Simulates a native click event on the element.
warningBefore calling this API, we need to call
_focusWindow
to bring the window into focus._clickNative(_button("b1"));
info
This API is very useful when _click does not help or a native click cannot be simulated by focusing on the element and generating a Space or Enter key (_typeKeyCodeNative(java.awt.event.KeyEvent.VK_SPACE)).
One can use this to click on File elements to bring up the File chooser dialog, when _setFile and _setFile2 do not work.
One can use this to click on File elements to bring up the File chooser dialog, when _setFile and _setFile2 do not work.
_rightClickNative
Since Sahi Pro: 6.0.0Since Sahi OS: NA
_rightClickNative($element[, $combo])
Arguments
| $element | HTML DOM element | element that has to be clicked. |
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
Details
Simulates a native right click event on the element.
Simulates a native right click event on the element.
warningBefore calling this API, we need to call
_focusWindow
to bring the window into focus._rightClickNative(_button("b1"));
_doubleClickNative
Since Sahi Pro: 6.0.0Since Sahi OS: NA
_doubleClickNative($element[, $combo])
Arguments
| $element | HTML DOM element | element that has to be double clicked. |
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
Details
Simulates a native double click event on the element.
Simulates a native double click event on the element.
warningBefore calling this API, we need to call
_focusWindow
to bring the window into focus._doubleClickNative(_button("b1"));
_clickNativeXY
Since Sahi Pro: 6.0.0Since Sahi OS: NA
_clickNativeXY($x, $y[, $combo[, $isRight[, $isDouble]]])
Arguments
| $x | integer | x coordinate of the screen position to be clicked |
| $y | integer | y coordinate of the screen position to be clicked |
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
| $isRight | boolean optional | If true, the click is a right click |
| $isDouble | boolean optional | If true, the click is a double click |
Details
Simulates a click event at the point (x,y).
Simulates a click event at the point (x,y).
warningBefore calling this API, we need to call
_focusWindow
to bring the window into focus._clickNativeXY(100, 200);
_clickNativeXY(150,300, "ALT"); // ALT + click
_mouseOverNative
Since Sahi Pro: 6.0.1Since Sahi OS: NA
_mouseOverNative($element[, $combo])
Arguments
| $element | HTML DOM element | Element to perform hover over or move the mouse over. |
| $combo | string optional | Any combo key: can be "CTRL", "SHIFT", "ALT" or "META"; Can also be two or more keys together like "CTRL|SHIFT" |
Details
Simulates a native mouse over event on the element.
Simulates a native mouse over event on the element.
warningBefore calling this API, we need to call
_focusWindow
to bring the window into focus._mouseOverNative(_button("b1"));
_dragDropNative
Since Sahi Pro: 6.0.0Since Sahi OS: NA
_dragDropNative($el, $el2)
Arguments
| $el | HTML DOM element | the draggable element |
| $el2 | HTML DOM element | the droppable element |
Details
Simulates a dragdrop event from element 1 to element 2 using native events.
Simulates a dragdrop event from element 1 to element 2 using native events.
warningBefore calling this API, we need to call
_focusWindow
to bring the window into focus._dragDropNative(_div("draggable"), _div("droppable"));
info
This API is useful when _dragDrop does not help.
Example: When you need to drag an element from one iframe into a drop target in another iframe, you would use _dragDropNative.
Example: When you need to drag an element from one iframe into a drop target in another iframe, you would use _dragDropNative.
_dragDropNativeXY
Since Sahi Pro: 6.0.0Since Sahi OS: NA
_dragDropNativeXY($x1, $y1, $x2, $y2)
Arguments
| $x1 | integer | x coordinate of the draggable element |
| $y1 | integer | y coordinate of the draggable element |
| $x2 | integer | x coordinate of the droppable element |
| $y2 | integer | y coordinate of the droppable element |
Details
Simulates a dragdrop event from element at first set of coordinates to element at second set of coordinates, using native events.
Simulates a dragdrop event from element at first set of coordinates to element at second set of coordinates, using native events.
warningBefore calling this API, we need to call
_focusWindow
to bring the window into focus._dragDropNativeXY(100,50, 100,150);
File Upload
_setFile and _setFile2 are used to set a file in the file input field.Form elements of type "file" cannot be populated using javascript on the browser.
So Sahi has a workaround for handling file uploads.
Sahi intercepts the request in the proxy, reads the file off the file system and inserts it into the multipart request.
The file has to be present on that path on the machine running the proxy.
_setFile
Since Sahi Pro: 3.5Since Sahi OS: 2
_setFile($element, $filePath[, $actionURL])
Arguments
| $element | HTML DOM element | HTML Form File Element whose value needs to be set |
| $filePath | string | Path of the file to be uploaded. |
| $actionURL | string optional | The form action URL to which the file is submitted. This is an optional parameter. Use it in cases where the form's action URL is changed on setting the file. By default, it uses the form's current action URL. |
Details
_setFile(_file("id"), "C:\\abc\\efg.jpg");
_setFile(_file("id"), "C:\\abc\\efg.jpg", "formSubmit.jsp");
warning
Note that _setFile works in a round about way. It is not handled at the browser level. It is handled at the proxy. So you will not see the file input box being populated with your desired filename. But when the form is submitted, the proxy will add the correct file to the request before it sends it to your web server. But if there are javascript checks before form submit to see if the filename is non-empty, then the script will not work as desired.
info
If there are javascript validations on the file field, use _setFile2 which works in the same way, but changes the file type using javascript so that validations may pass.
_setFile2
Since Sahi Pro: 4.5Since Sahi OS: 4.3
_setFile2($element, $filePath[, $actionURL])
Arguments
| $element | HTML DOM element | HTML Form File Element whose value needs to be set |
| $filePath | string | Path of the file to be uploaded. |
| $actionURL | string optional | The form action URL to which the file is submitted. This is an optional parameter. Use it in cases where the form's action URL is changed on setting the file. By default, it uses the form's current action URL. |
Details
Before submitting the file, _setFile2 internally changes the field's type to "text", and then set its value.
Before submitting the file, _setFile2 internally changes the field's type to "text", and then set its value.
_setFile2
is the same as doing the following:// _setFile2 implementation
// set the file
_setFile(_file("file"), "scripts/demo/uploadme.txt");
// Change the "type" attribute of file field
if (_isIE()){
_call(_file("file").outerHTML = _file("file").outerHTML.replace(/type=['"]?file['"]?/, "type=text"));
}else{
_call(_file("file").type = "text");
}
// Set the value into the textbox
_setValue(_textbox("file"), "scripts/demo/uploadme.txt");
info
If you use relative paths in _setFile and _setFile2, they should be relative to
Either use the correct relative path or the full absolute path.
userdata
folder.Either use the correct relative path or the full absolute path.
Troubleshooting
- Look to see if there are any exceptions on the Sahi console (the command prompt). If it shows any FileNotFoundException, correct the path of your file.
- Check if the URL to which the form is being submitted is correct. Sometimes the URL is changed when the form is submitted, and Sahi needs to be told about it using the 3rd parameter in _setFile/setFile2
Identifying action url for _setFile/_setFile2
-
Launch a browser from the Sahi Dashboard.
- Perform the file upload functionality in your app manually.
-
Check the output on the Sahi server console. It will look something like this.
[java] FileUpload: Multipart Request Found [java] Action URL for upload: [java] http://localhost/demo/php/fileUpload.php [java] The above action URL may be required as the third parameter while [java] calling _setFile and _setFile2 APIs. [java] Recording: false [java] For troubleshooting, click on 'Enable Traffic Logs' link on the Sahi Dashboard [java] and perform the upload operation. Upload logs will be created in [java] sahi/userdata/logs/file_upload/ folder.
As you can see from the output,http://localhost/demo/php/fileUpload.php
is the action url in this case.
-
Once you have identified the action url, use that as the third parameter in _setFile/_setFile2.
info
Complete examples on _setFile and _setFile2 are available in sahi/userdata/scripts/demo/fileUpload.sah
It can be run with start URL http://sahi.co.in/demo/
It can be run with start URL http://sahi.co.in/demo/
File upload using native events
Sometimes file uploads with the previous method may fail. In such cases we resort to native events.function setFileUpload($fileEl, $path) {
_focusWindow();
_wait(1000); // needed
// focus on the element
_focus($fileEl);
// click "space" to bring up the browser dialog
_typeKeyCodeNative(java.awt.event.KeyEvent.VK_SPACE);
_wait(1000);
// type the file path
_typeNative($path);
_wait(1000);
// press enter
_typeKeyCodeNative(java.awt.event.KeyEvent.VK_ENTER);
_wait(1000);
}
// Then invoke it like this:
setFileUpload(_file("id"), "C:\\abc\\efg.jpg");
//or
setFileUpload(_file("id"), _resolvePath("uploadme.txt")); // resolves relative to this file
warning
_focusWindow is available since Sahi Pro V4.3. It works only on Windows currently.
File Download
File download overview
Sahi's proxy detects file downloads, and automatically saves them tosahi/userdata/temp/download
directory.Sahi also adds the sessionId to the file name, so that multiple simultaneous tests do not overwrite each others files.
So if you were clicking on a "download" link which downloads a "setup.exe" file, this is how Sahi will handle it.
- Click on "download" link
- Sahi detects that it is a downloadable file, based on its MimeType and Content-Disposition headers.
It then downloads and saves the file into sahi/userdata/temp/download/ after renaming it to
something like: sahi_0384a26207e6104f5f08868032bd170de76d__setup.exe - Once the file is downloaded Sahi exposes the original name of the file ("setup.exe")
through the API: _lastDownloadedFileName() - Another API, _saveDownloadedAs, allows the file to be renamed and copied over to a convenient directory for you to work on.
- API: _clearLastDownloadedFileName() clears out the _lastDownloadedFileName() so that further files can be downloaded and worked upon.
_lastDownloadedFileName
Since Sahi Pro: 3.5Since Sahi OS: 2
_lastDownloadedFileName()
Arguments
| None |
Details
Returns the last downloaded file name.
Returns the last downloaded file name.
_saveDownloadedAs
Since Sahi Pro: 3.5Since Sahi OS: 2
_saveDownloadedAs($path)
Arguments
| $path | string | File path to copy this file into. Needs to be a file path not a directory. If path is relative, it is resolved relative to userdata directory. |
Details
Renames/copies the file into specified directory for further processing.
Renames/copies the file into specified directory for further processing.
_clearLastDownloadedFileName
Since Sahi Pro: 3.5Since Sahi OS: 2
_clearLastDownloadedFileName()
Arguments
| None |
Details
Clears out the _lastDownloadedFileName() so that further files can be downloaded and worked upon
Clears out the _lastDownloadedFileName() so that further files can be downloaded and worked upon
File download APIs example
_assertNull(_lastDownloadedFileName()); // nothing so far
_click(_link("download")); // click on download link
// Wait for a while till _lastDownloadedFileName() becomes NOT null. This is when the download is complete.
// We wait for a maximum of 90 seconds or till _lastDownloadedFileName() becomes NOT null.
// If you find that your file is huge and takes much longer, run the following statement in a loop for 5 or 6 retries.
// Do NOT increase 90000 to more than 120000.
_wait(90000, _lastDownloadedFileName() != null);
// Assert the name of the downloaded file.
_assertEqual("setup.exe", _lastDownloadedFileName()); // check if downloaded
if (_lastDownloadedFileName() != null) {
_saveDownloadedAs("c:/myownpath/setup.exe"); // save to another path
_clearLastDownloadedFileName(); // clear the variable
_assertNull(_lastDownloadedFileName()); // check to see if cleared.
}
File download troubleshooting
info
Sahi detects that a file is to be downloaded, based on
- its content type (configurable via sahi/userdata/config/download_contenttypes.txt)
- The Content-Disposition: attachment header
- Whether the URL is configured in sahi/userdata/config/download_urls.txt
If you see a file download dialog during playback, do the following:
- Check if the download URL follows a specific pattern. If yes, add the pattern of the URL to download_urls.txt
Eg., if your download url ishttp://mysite.example.com/export_doc.jsp?id=12318812
, add
to.*export_doc[.]jsp.*
sahi/userdata/config/download_urls.txt
- If there are multiple files that are to be downloaded, and they all are of a particular content-type,
add the content type tosahi/userdata/config/download_contenttypes.txt
- If your file download response always has content-disposition as "attachment", you can tell sahi to
download them by default by setting
indownload.download_if_contentdisposition_is_attachment=true
sahi/userdata/config/userdata.properties
. This is the default since Sahi Pro 4.3.2
Handling file downloads triggered in a new window
Sometimes a webpage may open a new window to show a PDF file.In this case, we need to ask Sahi to send a HTML response back using
_sendHTMLResponseAfterFileDownload API (need Sahi Pro V4.2+).
_sendHTMLResponseAfterFileDownload
Since Sahi Pro: 4.3Since Sahi OS: 4.3
_sendHTMLResponseAfterFileDownload($enable)
Arguments
| $enable | boolean | true enables html response behaviour, false disables html response |
Details
Forces Sahi to send back an HTML response after file download. Useful when file opens/downloads in a new window.
Add
Forces Sahi to send back an HTML response after file download. Useful when file opens/downloads in a new window.
Add
_sendHTMLResponseAfterFileDownload(true);
before the statement which triggers the download and Sahi will send back an HTML response. To turn it off, call_sendHTMLResponseAfterFileDownload(false);
Use it like this:
_assertNull(_lastDownloadedFileName()); // nothing so far
_sendHTMLResponseAfterFileDownload(true);
_click(_link("Show PDF in new Window"));
_wait(90000, _lastDownloadedFileName() != null);
_assertEqual("test.pdf", _lastDownloadedFileName());
if (_lastDownloadedFileName() != null) {
_saveDownloadedAs("c:/test.pdf");
_clearLastDownloadedFileName(); // clear the variable
_assertNull(_lastDownloadedFileName()); // check to see if cleared.
}
// Close the popup window
_selectWindow("/File Downloaded/");
_click(_link("Close Window"));
// Select back the main window
_selectWindow();
_sendHTMLResponseAfterFileDownload(false);
info
Technical Explanation
When the browser navigates to a downloadable file, Sahi automatically downloads the file.
After the file has downloaded Sahi sends a 204 response which essentially asks the page to stay where it is.
Now if that original page has Sahi's code in it, the Sahi script will proceed normally.
If it does not, then the script will stop. Since the PDF window is a fresh window, there is no content in it and Sahi's script stops.
When the browser navigates to a downloadable file, Sahi automatically downloads the file.
After the file has downloaded Sahi sends a 204 response which essentially asks the page to stay where it is.
Now if that original page has Sahi's code in it, the Sahi script will proceed normally.
If it does not, then the script will stop. Since the PDF window is a fresh window, there is no content in it and Sahi's script stops.
File download from a different domain
When a file is downloaded from a different domain than the invoking page, the file will get downloaded touserdata\temp\download
folder successfully. But since the download is from a different domain,it is not associated with the current script session. Hence _lastDownloadedFileName() will return null and
so _saveDownloadedAs() will fail.
To solve this problem, add _addToSession("http://newdomain") in the script before triggering download.
_addToSession
Since Sahi Pro: 4.5Since Sahi OS: NA
_addToSession($domain)
Arguments
| $domain | string | Domain to be associated with the current script session |
Details
Adds the domain to the current script session.
Example:
Adds the domain to the current script session.
Example:
_addToSession("http://downloaddomain.com"); // Here the download url is http. Change downloaddomain.com to your domain.
_addToSession("https://downloaddomain.com"); // Here the download url is https. Change downloaddomain.com to your domain.
danger
NOTE: If it is a https url, it is a MUST to prefix the domain name with "https://".
// Add new domain url to Sahi's playback session
_addToSession("http://downloads.mydomain.com");
// NOTE _addToSession comes before click
_click(_link("Download"));
// The rest of the code is same as above...
Once we add _addToSession, _lastDownloadedFileName() will return the correct downloaded file name, and hence _saveDownloadedAs() will work correctly.
Window open/close APIs
_closeWindow
Since Sahi Pro: 3.5Since Sahi OS: 3
_closeWindow()
Arguments
| None |
Details
Closes the current window.
This will work only for popups.
Eg.
Closes the current window.
This will work only for popups.
Eg.
_popup("popWin")._closeWindow();
_closeBrowser
Since Sahi Pro: 4.3.2Since Sahi OS: NA
_closeBrowser()
Arguments
| None |
Details
Closes the browsers in this session in the middle of a script.
Closes the browsers in this session in the middle of a script.
warning
Use with caution.
- This can be only used when singleSession is false in a suite.
- ALWAYS follow this with _openBrowser(). Otherwise the script will hang.
- A wait(5000) may be needed after closing to allow the browser to clean up properly.
_openBrowser
Since Sahi Pro: 4.3.2Since Sahi OS: NA
_openBrowser()
Arguments
| None |
Details
Opens the browser in this session in the middle of a script. Used to reopen browser after _closeBrowser.
Opens the browser in this session in the middle of a script. Used to reopen browser after _closeBrowser.
warningUse with caution.
- This can be only used when singleSession is false in a suite.
- Always use it after a _closeBrowser() command
- This will not allow multiple browsers in the same session. Use _launchNewBrowser and _selectBrowser for that
Calling Generic Code
_call
Since Sahi Pro: 3.5Since Sahi OS: 2
_call($expression)
Arguments
| $expression | expression | Any expression which needs to be evaluated on the browser Note that the expression is not quoted and is NOT a string. |
Details
_call is a generic API to bypass Sahi's action APIs and directly call javascript on the DOM.
_call is a generic API to bypass Sahi's action APIs and directly call javascript on the DOM.
// For example, a date field may bring up the calendar, but selecting the year,month etc. may be time consuming.
// For repeated flows, one may want to bypass this by directly setting the value of the field through javascript.
_call(_textbox("date").value = "25/02/1990");
_eval
Since Sahi Pro: 3.5Since Sahi OS: 2
_eval($evalString)
Arguments
| $evalString | string | Any string which needs to be javascript 'eval'ed on the browser |
Details
_eval, like _call, is a generic API to bypass Sahi's action APIs and directly call javascript on the DOM.
However, _eval takes a string instead of an expression.
_eval, like _call, is a generic API to bypass Sahi's action APIs and directly call javascript on the DOM.
However, _eval takes a string instead of an expression.
// For example, a date field may bring up the calendar, but selecting the year,month etc. may be time consuming.
// For repeated flows, one may want to bypass this by directly setting the value of the field through javascript.
_eval("_textbox(\"date\").value = \"25/02/1990\"");
warning_call is recommended over _eval since _call is easier to use.


Home
Create
Login
My Account
Title
A bunch of text
CLICK TO CONTINUE
Choose Game
Star Citizen
Starcraft 2
Wildlands
Choose Game 1
Choose Game
Star Wars Battlefront 2
Player Unknown Battlegrounds
Destiny 2
Choose Game 2
Destiny 2
League Of Legends
Grand Theft Auto 5
Minecraft
Choose Game 3
Choose Game
League Of Legends
Call of Duty WW2
CS:GO
Choose Game 4
Add Game (Admin)


{% extends "register/base.html" %} {% block content %} Please check your mail and confirm mail for active your account. Thanks. {% endblock %}


With WebGL, the browser is now a complete 3D platform. Powerful APIs provide everything we need: graphics, compositing, animation, threading, networking... making mind-blowing connected 3D applications possible. The API approach provides maximum flexibility - render whatever you want without the browser needing to support new objects - but the pendulum has swung too far. It takes lines and lines of JavaScript and JSON to make even the simplest 3D content. And there is no easy way to style your content once you've created it.
Let's say you want to create a cube with a texture map (image) on its surface. Using the WebGL API, that's about 300 lines of code. (Really.) You have to create buffers, load textures, set states, write shaders, and finally make drawing calls. It's a ton of work, and it's in an alien language full of unfamiliar concepts. So, you turn to Three.js to make it easier. Now, in about forty lines of code, you have accomplished the same thing, and are working with high level, easy to understand graphics objects. Cool... but think about it: forty lines of JavaScript code to make a cube. And that cube doesn't animate, you can't use your mouse to rotate it, and you can't change its appearance with a style sheet. Wouldn't it be great if you could just say
<cube>
and a cube appears on the page? You bet it would.
Web developers need a simple way to create 3D content in pages that can be styled and programmed like any other page content. We need a 3D markup language for the web. We need... GLAM!
For more on the motivation behind GLAM, check out Tony's slideshare presentation.
WebGL is ubiquitous. With the release of iOS8, WebGL now runs on all major desktop
and mobile browsers, across all devices. That's 3 billion seats ready for connected 3D
applications, everywhere, powered by JavaScript. This is an incredible opportunity to
change the face of computing.
The last few years have seen an explosion of interest in building WebGL. But there is a
huge skill gap. 3D is inherently hard, yes; we have that extra dimension to worry about,
plus cameras, shaders, skinned animations, etc... But there is no reason to make 3D
harder than it has to be. For the simple 3D stuff, there should be a simple way to do it,
with an approach that is familiar to the millions of web developers ready to try something
new. Until GLAM, this didn't exist. GLAM is here to make your 3D job easier, so you can
focus on the fun part: building a killer 3D web app.
To add GLAM to your application, simply include either the debug or minified version of
the library:
<script src="pathtoglam/glam.js"> </script>
OR
<script src="pathtoglamlib/glam.min.js"> </script>
... and then you can start adding 3D tags to your page. To see what those tags look like,
read the Getting Started Tutorial (link)
Right now, authoring GLAM requires a text editor. Someday, maybe, we'll build an interactive tool for authoring, or at least a syntax assisted in browser editor a la JSFiddle. To test, you will most likely need a web server ... so that you can see your texture maps and shaders. Launching HTML files from your Finder/Explorer usually results in the browser yakking about cross-origin restrictions.
GLAM is new. We're just getting started, and we need your help! We are looking for help
with code, content and documentation. Check out the Github repo and examples (links
here) and join the GLAM revolution!
CAN YOU DIG IT?


[% page.title ="Perl 6" %]
Perl 6The Perl 6 site has further information about how to find out more or contribute to Perl 6's development. |
RakudoRakudo, a Perl 6 compiler based on Parrot, allows compilation to bytecode, and a small wrapper exists that can pack up a bytecode file and parrot into a single executable. Rakudo is mature enough that you can play with it today, and provide valuable feedback to both the implementers and the language designers. |
The project attempts to address the interpreter, the language, and the culture. The internals of the version 5 interpreter are so tangled that they hinder maintenance, thwart some new feature efforts, and scare off potential internals hackers. The language as of version 5 has some misfeatures that are a hassle to ongoing maintenance of the interpreter and of programs written in Perl. And finally, the entire Perl community is invited to participate in the design and implementation of Perl 6.
"Perl 5 was my rewrite of Perl. I want Perl 6 to be the community's rewrite of Perl and of the community."
"The Perl 6 design process is about keeping what works in Perl 5, fixing what doesn't, and adding what's missing. That means there will be a few fundamental changes to the language, a large number of extensions to existing features, and a handful of completely new ideas. These modifications, enhancements, and innovations will work together to make the future Perl even more insanely great -- without, we hope, making it even more greatly insane."
The vision for Perl 6 is more than simply a rewrite of Perl 5. By separating the parsing from the compilation and the runtime, we're opening the doors for multiple languages to cooperate. You'll be able to write your program in Perl 6, Perl 5, TCL, Python, or any other language for which there is a parser. Interchangable runtime engines let you interpret your bytecode or convert it to something else (e.g., Java, C, or even back to Perl).


Uniform access to local and remote resources Resolution for relative URIs in accordance with RFC 2396 This software is in Public Domain. IT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. Please send bug reports and comments to<EMAIL_ADDRESS>Dmitry Lizorkin
Whether the resource exists (generalization of FILE-EXISTS? predicate) REQ-URI - a string representing a URI of the resource This predicate doesn't have any side effects
Opens an input port for a resource REQ-URI - a string representing a URI of the resource An input port is returned if there were no errors. In case of an error, the function returns #f and displays an error message as a side effect. Doesn't raise any exceptions.
Returns a file extenstion filename - a string File extension is returned in the form of a string
Determines the type of a resource REQ-URI - a string representing a URI of the resource For a local resource, its type is determined by its file extension One of the following is returned: #f - if the requested resource doesn't exist 'xml - for a resource that is an XML document 'html - for a resource that is an HTML document 'unknown - for any other resource type
This section is based on RFC 2396
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ] genericURI = <scheme>://<authority><path>?<query> For a sertain subset of URI schemes, absoluteURI = genericURI We will suppose this condition valid in this implementation
Returns: (values scheme authority path query fragment) If some component is not presented in the given URI, #f is returned for this component. Note that the path component is always presented in the URI
Combines components into the URI
abs_path = "/" path_segments path_segments = segment *( "/" segment )
Splits the given path into segments Returns: (values root dir-lst filename) dir-lst ::= (listof directory-name) root - either an empty string, or "/" or drive-name (for Windows filesystems)
Combines path_segments into the path backslash? - a boolean value: whether the backslach shall be used as a delimiter between path_segments. If #f, straight slash is used
Removes redundant segment combinations from the dir-lst '("smth" "..") --> removed '(".") --> removed The algorithm is formally specified in RFC 2396, 5.2, step 6)
base-uri - base URI for the requiested one Returns the resolved URI
Whether the resource exists (generalization of FILE-EXISTS? predicate) REQ-URI - a string representing a URI of the resource This predicate doesn't have any side effects
(define (resource-exists? req-uri) (cond ((string-prefix? "http://" req-uri) ; HTTP scheme is used in REQ-URI (with-exception-handler (lambda (x) #f) ; an uncaught exception occured during http transaction (lambda () (http-transaction "HEAD" req-uri (list (cons 'logger (lambda (port message . other-messages) #t))) (lambda (resp-code resp-headers resp-port) (close-input-port resp-port) (and (>= resp-code 200) (< resp-code 400))))))) (else ; a local file (file-exists? req-uri))))
Opens an input port for a resource REQ-URI - a string representing a URI of the resource An input port is returned if there were no errors. In case of an error, the function returns #f and displays an error message as a side effect. Doesn't raise any exceptions.
(define (open-input-resource req-uri) (with-exception-handler (lambda (x) (cerr nl req-uri ": " ((condition-property-accessor 'exn 'message) x) nl) #f) (lambda () (cond ((string-prefix? "http://" req-uri) ; HTTP scheme is used in REQ-URI (http-transaction "GET" req-uri (list (cons 'logger (lambda (port message . other-messages) #t))) (lambda (resp-code resp-headers resp-port) (cond ((and (>= resp-code 200) (< resp-code 400)) resp-port) (else (close-input-port resp-port) (cerr nl req-uri ": resource not available: " resp-code nl) #f))))) (else ; a local file (open-input-file req-uri))))))
Returns a file extenstion filename - a string File extension is returned in the form of a string
(define (ar:file-extension filename) (let loop ((src (reverse (string->list filename))) (res '())) (cond ((null? src) ; no dot encountered => no extension "") ((char=? (car src) #\.) (list->string res)) (else (loop (cdr src) (cons (car src) res))))))
Determines the type of a resource REQ-URI - a string representing a URI of the resource For a local resource, its type is determined by its file extension One of the following is returned: #f - if the requested resource doesn't exist 'xml - for a resource that is an XML document 'html - for a resource that is an HTML document 'unknown - for any other resource type
(define (ar:resource-type req-uri) (cond ((string-prefix? "http://" req-uri) ; HTTP scheme is used in REQ-URI (with-exception-handler (lambda (x) #f) ; an uncaught exception occured during http transaction (lambda () (http-transaction "HEAD" req-uri (list (cons 'logger (lambda (port message . other-messages) #t))) (lambda (resp-code resp-headers resp-port) (close-input-port resp-port) (if (or (< resp-code 200) (>= resp-code 400)) #f ; Resource doesn't exist (let ((content-type (assq 'CONTENT-TYPE resp-headers))) (cond ((not content-type) ; no content type specified 'unknown) ((string-prefix? "text/xml" (cdr content-type)) 'xml) ((string-prefix? "text/html" (cdr content-type)) 'html) ((string-prefix? "text/plain" (cdr content-type)) 'plain) (else 'unknown))))))))) (else ; a local file (cond ((not (file-exists? req-uri)) ; file doesn't exist #f) ((assoc (ar:file-extension req-uri) '(("xml" . xml) ("html" . html) ("htm" . html))) => cdr) (else 'unknown)))))
Returns: (values scheme authority path query fragment) If some component is not presented in the given URI, #f is returned for this component. Note that the path component is always presented in the URI
(define (ar:uri->components uri) (call-with-values (lambda () (cond ((string-rindex uri #\#) => (lambda (pos) (values (substring uri (+ pos 1) (string-length uri)) (substring uri 0 pos)))) (else (values #f uri)))) (lambda (fragment uri) (call-with-values (lambda () (cond ((string-rindex uri #\?) => (lambda (pos) (values (substring uri (+ pos 1) (string-length uri)) (substring uri 0 pos)))) (else (values #f uri)))) (lambda (query uri) (call-with-values (lambda () (cond ((substring? "://" uri) => (lambda (pos) (values (substring uri 0 (+ pos 3)) (substring uri (+ pos 3) (string-length uri))))) ((string-index uri #\:) => (lambda (pos) (values (substring uri 0 (+ pos 1)) (substring uri (+ pos 1) (string-length uri))))) (else (values #f uri)))) (lambda (scheme uri) (call-with-values (lambda () (cond ((not scheme) (values #f uri)) ((string-index uri #\/) => (lambda (pos) (values (substring uri 0 pos) (substring uri pos (string-length uri))))) (else (values #f uri)))) (lambda (authority path) (values scheme authority path query fragment))))))))))
Combines components into the URI
(define (ar:components->uri scheme authority path query fragment) (apply string-append (append (if scheme (list scheme) '()) (if authority (list authority) '()) (list path) (if query (list "?" query) '()) (if fragment (list "#" fragment) '()))))
Splits the given path into segments Returns: (values root dir-lst filename) dir-lst ::= (listof directory-name) root - either an empty string, or "/" or drive-name (for Windows filesystems)
(define (ar:path->segments path) (call-with-values (lambda () (let ((lng (string-length path))) (cond ((and (> lng 0) (char=? (string-ref path 0) #\/)) (values "/" (substring path 1 lng))) ((and (> lng 1) (char=? (string-ref path 1) #\:) (member (string-ref path 2) (list #\/ #\\))) (values (substring path 0 3) (substring path 3 lng))) (else (values "" path))))) (lambda (root rel-path) (let ((lst (string-split rel-path (list #\/ #\\)))) (if (null? lst) ; the relative path is empty (values root '() "") (let ((lst (reverse lst))) (values root (reverse (cdr lst)) (car lst))))))))
Combines path_segments into the path backslash? - a boolean value: whether the backslach shall be used as a delimiter between path_segments. If #f, straight slash is used
(define (ar:segments->path root dir-lst filename backslash?) (let ((delim (if backslash? "\\" "/"))) (apply string-append (append (list root) (apply append (map (lambda (directory-name) (list directory-name delim)) dir-lst)) (list filename)))))
Removes redundant segment combinations from the dir-lst '("smth" "..") --> removed '(".") --> removed The algorithm is formally specified in RFC 2396, 5.2, step 6)
(define (ar:normalize-dir-lst dir-lst) (cond ((null? dir-lst) dir-lst) ((string=? (car dir-lst) ".") (ar:normalize-dir-lst (cdr dir-lst))) ((string=? (car dir-lst) "..") (cons (car dir-lst) (ar:normalize-dir-lst (cdr dir-lst)))) (else (let ((processed (ar:normalize-dir-lst (cdr dir-lst)))) (cond ((null? processed) (list (car dir-lst))) ((string=? (car processed) "..") (cdr processed)) (else (cons (car dir-lst) processed)))))))
base-uri - base URI for the requiested one Returns the resolved URI
(define (ar:resolve-uri-according-base base-uri req-uri) (call-with-values (lambda () (ar:uri->components req-uri)) (lambda (req-scheme req-authority req-path req-query req-fragment) (if (or req-scheme req-authority) ; it is the absolute URI req-uri (call-with-values (lambda () (ar:path->segments req-path)) (lambda (req-root req-dir-lst req-filename) (if (> (string-length req-root) 1) ; absolute path from the disc drive req-uri (call-with-values (lambda () (ar:uri->components base-uri)) (lambda (base-scheme base-authority base-path base-query base-fragment) (if (string=? req-root "/") ; absolute path from server (ar:components->uri base-scheme base-authority req-path req-query req-fragment) ; else the requested URI is the relative URI (call-with-values (lambda () (ar:path->segments base-path)) (lambda (base-root base-dir-lst base-filename) (ar:components->uri base-scheme base-authority (ar:segments->path base-root (ar:normalize-dir-lst (append base-dir-lst req-dir-lst)) req-filename (and (not (string-index base-path #\/)) (string-index req-path #\\))) req-query req-fragment)))))))))))))


The Voyages of Doctor Dolittle
by Hugh Lofting
The Voyages of Doctor Dolittle was the second of Hugh Lofting's Doctor Dolittle books to be published, coming out in 1922. It is nearly four times longer than its predecessor and the writing style is pitched at a more mature audience. The scope of the novel is vast; it is divided into six parts and the illustrations are also more sophisticated. It won the Newbery Medal for 1923.
Source: Lofting, H. (1922). The Voyages of Doctor Dolittle. London, England: Lippincott Publishing.
- Prologue
- An introduction by the books narrator, Tommy Stubbins.
- Part 1, Chapter 1: The Cobbler's Son
- Tommy Stubbins tells about his life in Puddleby-on-the-Marsh and his three friends, Joe, Matthew Mugg, and Luke.
- Part 1, Chapter 2: I Hear of the Great Naturalist
- Having come across an injured squirrel, Tommy is directed to the office of John Dolittle by his friends. Matthew tells Tommy of the good doctors many voyages. Upon arriving at the doctor's house, the visitors encounter the loyal dog Jip, but find that the doctor is no where to be found.
- Part 1, Chapter 3: The Doctor's Home
- Tommy returns to the doctor's house after making a delivery for his father, the cobbler. While attempting to beat the weather, Tommy accidentally runs into Doctor Dolittle. Having been invited into the Dolittle home, Tommy is shocked by what he sees.
- Part 1, Chapter 4: The Wiff-Wiff
- Having gotten a thorough picture of the inner workings of the Dolittle house, Tommy inquires about some of the various exotic animals that are in the doctor's home. After dinner, Doctor Dolittle accompanies Stubbins to see the injured squirrel.
- Part 1, Chapter 5: Polynesia
- En route to the Stubbins home, Doctor Dolittle describes Polynesia and the role she played in his development as a doctor and his understanding of various animal languages. An old friend makes a surprise visit bringing word of various friends and acquaintances.
- Part 1, Chapter 6: The Wounded Squirrel
- The doctor treats the injured squirrel after a short musical demonstration in the Stubbins home.
- Part 1, Chapter 7: Shellfish Talk
- Eager to see the rest of the Dolittle estate, Tommy arrives early, greeted by Polynesia. The doctor and Tommy discuss the language of solitary animals.
- Part 1, Chapter 8: Are You a Good Noticer
- Word spreads of the doctor's return home, prompting visits from various animals. Polynesia explains the finer points of understanding animals.
- Part 1, Chapter 9: The Garden of Dreams
- The narrator gives a description of the Dolittle garden and its exotic inhabitants.
- Part 1, Chapter 10: The Private Zoo
- Tommy is given a tour of the animal's quarters.
- Part 1, Chapter 11: My Schoolmaster, Polynesia
- Polynesia begins her tutoring of Tommy on the nuances of understanding animals and their language. Doctor Dolittle performs another of his many services for a local dog missing his owner.
- Part 1, Chapter 12: My Great Idea
- Tommy suggests an arrangement to Doctor Dolittle. The doctor tells of the mysterious naturalist, Long Arrow.
- Part 1, Chapter 13: A Traveler Arrives
- Tommy's abilities continue to progress under the tutelage of Polynesia. A long lost friend returns from Africa.
- Part 1, Chapter 14: Chee-Chee's Voyage
- Chee-Chee, having grown homesick without Polynesia, makes her way back to Puddleby.
- Part 1, Chapter 15: I Become a Doctor's Assistant
- The Stubbins' household prepares for dinner with the doctor. Tommy's parents and Doctor Dolittle discuss Tommy's possible life as a naturalist.
- Part 2, Chapter 1: The Crew of "The Curlew"
- Tommy's role as the doctor's assistant gives him a certain amount of status he before had. Preparations are made for the next voyage, as Doctor Dolittle awaits word from long arrow.
- Part 2, Chapter 2: Luke the Hermit
- The doctor pays a visit to Luke the hermit, who is surprisingly absent from the area.
- Part 2, Chapter 3: Jip and the Secret
- Jip reluctantly reveals the fate and location of Luke the Hermit.
- Part 2, Chapter 4: Bob
- Doctor Dolittle visits Luke the Hermit and his dog Bob at the courthouse.
- Part 2, Chapter 5: Mendoza
- Luke's trial commences and Doctor Dolittle is called as a witness for the defense.
- Part 2, Chapter 6: The Judge's Dog
- Prior to the start of his testimony, Doctor Dolittle proves himself to the court.
- Part 2, Chapter 7: The End of the Mystery
- With Doctor Dolittle's help, Bob finally sets the record straight regarding the death of Bluebeard Bill.
- Part 2, Chapter 8: Three Cheers
- After a short deliberation, the jury return with their decision.

- Part 2, Chapter 10: Long Arrow, the Son of Golden Arrow
- Doctor Dolittle receives word about the disappearance of Golden Arrow's son, Long Arrow.
- Part 2, Chapter 11: Blind Travel
- Disappointed by the disappearance of Long Arrow, Doctor Dolittle plans his next expedition, unsure of his destination.
- Part 2, Chapter 12: Destiny and Destination
- Using the atlas as their guid, the doctor and Tommy pick their next destination, Spidermonkey Island.
- Part 3, Chapter 1: The Third Man
- As the Curlew prepares to depart, an old friend arrives just in time to join the crew.
- Part 3, Chapter 2: Good-Bye!
- After a number of delays, the Curlew departs to great fanfare and celebration by the citizens of Puddleby.
- Part 3, Chapter 3: Our Troubles Begin
- After the discovery of some old friends on board the Curlew, Doctor Dolittle is forced to make an unplanned stop.
- Part 3, Chapter 4: Our Troubles Continue
- The voyage continues smoothly for about a week until another stowaway is discovered below deck.
- Part 3, Chapter 5: Polynesia Has a Plan
- Polynesia comes up with a plan to deal with Ben Butcher.
- Part 3, Chapter 6: The Bed-Maker of Monteverde
- After stopping in the Capa Blanca Islands to procure provisions, Doctor Dolittle and his crew find an unusual place to rest.
- Part 3, Chapter 7: The Doctor's Wager
- Disgusted by the local custom of bullfighting, Doctor Dolittle makes a bet with the influential Don Enrique, with Prince Bumpo making a side bet of his own.
- Part 3, Chapter 8: The Great Bullfight
- Amid great bursts of laughter from the crowd, Doctor Dolittle enters the ring to challenge the great matador, Pepito de Malaga.
- Part 3, Chapter 9: We Depart in a Hurry
- Having won his wager, Doctor Dolittle and and his part prepare for a hasty departure, fearing reprisal from the angry citizens of Monteverde.
- Part 4, Chapter 1: Shellfish Languages Again
- As the voyage continues, Doctor Dolittle once again attempts to understand the language of the shellfish.
- Part 4, Chapter 2: The Fidgit's Story
- Having gained a greater understanding of shellfish languages, Doctor Dolittle transcribes the Fidgit's life story.
- Part 4, Chapter 3: Bad Weather
- The Curlew's smooth sailing is interrupted by a sudden patch of rough seas.
- Part 4, Chapter 4: Wrecked!
- Tommy awakens to a dire situation, awash in the Curlew's wreckage.
- Part 4, Chapter 5: Land
- The reunited crew of the Curlew slowly continue their voyage towards land.
- Part 4, Chapter 6: The Jabizri
- In the process of safely traversing the coast, Doctor Dolittle discovers a very interesting insect. The group changes course and heads towards the mountains.
- Part 4, Chapter 7: Hawk's-Head Mountain
- Doctor Dolittle continues to hastily traverse the landscape, while speculating about the fate of Long Arrow. Mr. Jabizri takes the lead as the mountain gets closer.
- Part 5, Chapter 1: A Great Moment
- Having discovering the trapped Long Arrow, the group works to rescue the naturalist. Jip once again proves himself to be a hero. Doctor Dolittle's action bring great affection from the rest of the tribe.
- Part 5, Chapter 2: "The Men of the Moving Land"
- Long Arrow is upset the passing of a village elder. Doctor Dolittle and his group, having been invited to a great feast, make their way to the village.
- Part 5, Chapter 3: Fire
- Doctor Dolittle introduces the Popsipetel tribe to the gift of fire.
- Part 5, Chapter 4: What Makes an Island Float
- The doctor turns to the assistance of some passing porpoises to inquire about the current location of the island, finding out something rather interesting in the process.
- Part 5, Chapter 5: War!
- Doctor Dolittle and Long Arrow's discussion of natural history is interrupted by news of Bagjagderag hostility. Doctor Dolittle is introduced to Big Teeth, agreeing to accompany him in an attempt to achieve a peaceful resolution to the conflict.
- Part 5, Chapter 6: General Polynesia
- The Terrible Three fight valiantly against the Bagjagderags, but cannot hold back the enemies superior numbers. Polynesia, now in charge of an army of her own, rises to the occasion.
- Part 5, Chapter 7: The Peace of the Parrots
- Doctor Dolittle, Prince Bumpo, and the injured Long Arrow travel to the land of the Bagjagderag, intending to negotiate a final peace between the tribes. The parrots stand down.
- Part 5, Chapter 8: The Hanging Stone
- The doctor, Bumpo, and Long Arrow depart the Bagjagderag camp, having made a great impact behaviors and beliefs. The group is taken to the Whispering Rocks, where they learn another of the island's secrets. The Popsipetel prepare to elect a new chief.
- Part 5, Chapter 9: The Election
- As the election ends, the good doctor finds himself in a peculiar situation.
- Part 5, Chapter 10: The Coronation of King Jong
- A new kings is crowned as the island finds a permanent home.
- Part 6, Chapter 1: New Popsipetel
- Now king of the Popsipetels, Doctor Dolittle works tirelessly to improve the lives of every member of the tribe. The doctor gets a new home.
- Part 6, Chapter 2: Thoughts of Home
- Doctor Dolittle addresses the subject of returning back to Puddleby.
- Part 6, Chapter 3: The Red Man's Science
- Long Arrow returns, excited to show off some of his findings.
- Part 6, Chapter 4: The Sea-Serpent
- Awakened by Polynesia, Tommy witnesses a rare sea creature just of the coast. Doctor Dolittle turns to the porpoises in an attempt to free the poor creature.
- Part 6, Chapter 5: The Shellfish Riddle Solved at Last
- Having been visited by various sea creatures attempting to save the trapped snail, Doctor Dolittle suddenly has a breakthrough with the shellfish language.
- Part 6, Chapter 6: The Last Cabinet Meeting
- Polynesia works tirelessly to secure a period of rest for the doctor, asking her friends for assistance in the process.
- Part 6, Chapter 7: The Doctor's Decision
- Polynesia, having already convinced the doctor to take a vacation, attempts to influence even more. Doctor Dolittle and his friends begin their trip home.


M.C.A
GARDEN CITY UNIVERSITY
Pursuing masters in computer applicaton from garden city University banglore.
B.C.A
PRIST UNIVERSITY THANJAVUR
Completed my bachelore in computer application form prist university thanjavur with distinction.
HSC
KENDRIYA VIDYALAYA 2 OFDR PUNE.
Completed my higher secondary from KV-2 OFDR PUNE with 66%.
SSLC
KENDRIYA VIDYALAYA MALKAPURAM VIZAG.
Completed my intermidiate from kendriya vidyalaya malkapuram vizag with 74%.
PROJECTS
Projects did by me.
1. ATM stimulation using java applet. 2. DEFI application using blockchain. 3. Online voting system using blockchain.
ORGANIZATIONAL SKILLS
My other skills
Leadership. Problem Solving. Planning and Decision Making. Communication. Dedication. Adjustable
LANGUAGES KNOWN
TAMIL, HINDI, ENGLISH, TELGU.


A config object containing any or all of the following properties. If this object is not specified the status will be cleared using the defaults.
More...
|
| virtual int | Duration [get, set] |
| | The length of time in milliseconds that the progress bar should run before resetting itself (defaults to undefined, in which case it will run indefinitely until reset is called) More...
|
| |
| virtual int | Interval [get, set] |
| | The length of time in milliseconds between each progress update (defaults to 1000 ms) More...
|
| |
| virtual bool | Animate [get, set] |
| | Whether to animate the transition of the progress bar. If this value is not specified, the default for the class is used. More...
|
| |
| virtual int | Increment [get, set] |
| | The number of progress update segments to display within the progress bar (defaults to 10). If the bar reaches the end and is still updating, it will automatically wrap back to the beginning. More...
|
| |
| virtual string | Text [get, set] |
| | Optional text to display in the progress bar element (defaults to ''). More...
|
| |
| virtual string | Fn [get, set] |
| | A callback function to execute after the progress bar finishes auto-updating. The function will be called with no arguments. This function will be ignored if duration is not specified since in that case the progress bar can only be stopped programmatically, so any required function should be called by the same code after it resets the progress bar. More...
|
| |
| virtual string | Scope [get, set] |
| | The scope that is passed to the callback function (only applies when duration and fn are both passed). More...
|
| |
| override ConfigOptionsCollection | ConfigOptions [get] |
| |
| virtual ConfigOptionsCollection | ConfigOptions [get] |
| |
| virtual ConfigOptionsExtraction | ConfigOptionsExtraction [get] |
| |
| virtual DefaultValueMode | DefaultValueMode [get, set] |
| |
| ConfigOptionsCollection | ConfigOptions [get] |
| |
| ConfigOptionsExtraction | ConfigOptionsExtraction [get] |
| |
| DefaultValueMode | DefaultValueMode [get, set] |
| |
A config object containing any or all of the following properties. If this object is not specified the status will be cleared using the defaults.
◆ WaitConfig()
| Ext.Net.Mobile.WaitConfig.WaitConfig |
( |
| ) |
|
|
inline |
◆ ToJsonString()
| virtual string Ext.Net.Mobile.WaitConfig.ToJsonString |
( |
| ) |
|
|
inlinevirtual |
◆ Animate
| virtual bool Ext.Net.Mobile.WaitConfig.Animate |
|
getset |
Whether to animate the transition of the progress bar. If this value is not specified, the default for the class is used.
◆ ConfigOptions
◆ Duration
| virtual int Ext.Net.Mobile.WaitConfig.Duration |
|
getset |
The length of time in milliseconds that the progress bar should run before resetting itself (defaults to undefined, in which case it will run indefinitely until reset is called)
◆ Fn
| virtual string Ext.Net.Mobile.WaitConfig.Fn |
|
getset |
A callback function to execute after the progress bar finishes auto-updating. The function will be called with no arguments. This function will be ignored if duration is not specified since in that case the progress bar can only be stopped programmatically, so any required function should be called by the same code after it resets the progress bar.
◆ Increment
| virtual int Ext.Net.Mobile.WaitConfig.Increment |
|
getset |
The number of progress update segments to display within the progress bar (defaults to 10). If the bar reaches the end and is still updating, it will automatically wrap back to the beginning.
◆ Interval
| virtual int Ext.Net.Mobile.WaitConfig.Interval |
|
getset |
The length of time in milliseconds between each progress update (defaults to 1000 ms)
◆ Scope
| virtual string Ext.Net.Mobile.WaitConfig.Scope |
|
getset |
The scope that is passed to the callback function (only applies when duration and fn are both passed).
◆ Text
| virtual string Ext.Net.Mobile.WaitConfig.Text |
|
getset |
Optional text to display in the progress bar element (defaults to '').
The documentation for this class was generated from the following files:
- Ext/ProgressBar.WaitConfig.cs
- Factory/ConfigOptions/WaitConfigConfigOptions.cs


85 Foreign Key Constraints
| Constraint Name | Child Column | Parent Column | Delete Rule | ||
|---|---|---|---|---|---|
| collection_article_id_foreign |
|
|
Restrict delete | ||
| collection_entrance_id_foreign |
|
|
Restrict delete | ||
| article_boost_article_id_foreign |
|
|
Restrict delete | ||
| transaction_recipient_id_foreign |
|
|
Restrict delete | ||
| transaction_sender_id_foreign |
|
|
Restrict delete | ||
| feedback_asset_feedback_id_foreign |
|
|
Restrict delete | ||
| feedback_asset_asset_id_foreign |
|
|
Restrict delete | ||
| appreciation_recipient_id_foreign |
|
|
Restrict delete | ||
| appreciation_sender_id_foreign |
|
|
Restrict delete | ||
| matters_today_article_id_foreign |
|
|
Restrict delete | ||
| user_oauth_user_id_foreign |
|
|
Restrict delete | ||
| action_comment_user_id_foreign |
|
|
Restrict delete | ||
| action_comment_target_id_foreign |
|
|
Restrict delete | ||
| customer_user_id_foreign |
|
|
Restrict delete | ||
| report_asset_asset_id_foreign |
|
|
Restrict delete | ||
| report_asset_report_id_foreign |
|
|
Restrict delete | ||
| user_oauth_likecoin_liker_id_foreign |
|
|
Restrict delete | ||
| payout_account_user_id_foreign |
|
|
Restrict delete | ||
| action_article_user_id_foreign |
|
|
Restrict delete | ||
| action_article_target_id_foreign |
|
|
Restrict delete | ||
| verification_code_user_id_foreign |
|
|
Restrict delete | ||
| tag_boost_tag_id_foreign |
|
|
Restrict delete | ||
| punish_record_user_id_foreign |
|
|
Restrict delete | ||
| matters_choice_article_id_foreign |
|
|
Restrict delete | ||
| release_cover_foreign |
|
|
Restrict delete | ||
| action_tag_user_id_foreign |
|
|
Restrict delete | ||
| action_tag_target_id_foreign |
|
|
Restrict delete | ||
| invitation_sender_id_foreign |
|
|
Restrict delete | ||
| invitation_recipient_id_foreign |
|
|
Restrict delete | ||
| notice_actor_notice_id_foreign |
|
|
Restrict delete | ||
| notice_actor_actor_id_foreign |
|
|
Restrict delete | ||
| username_edit_history_user_id_foreign |
|
|
Restrict delete | ||
| comment_mentioned_user_comment_id_foreign |
|
|
Restrict delete | ||
| comment_mentioned_user_user_id_foreign |
|
|
Restrict delete | ||
| oauth_client_avatar_foreign |
|
|
Restrict delete | ||
| oauth_client_user_id_foreign |
|
|
Restrict delete | ||
| oauth_access_token_client_id_foreign |
|
|
Restrict delete | ||
| oauth_access_token_user_id_foreign |
|
|
Restrict delete | ||
| article_tag_tag_id_foreign |
|
|
Restrict delete | ||
| article_tag_article_id_foreign |
|
|
Restrict delete | ||
| feedback_user_id_foreign |
|
|
Restrict delete | ||
| article_read_article_id_foreign |
|
|
Restrict delete | ||
| article_read_user_id_foreign |
|
|
Restrict delete | ||
| notice_notice_detail_id_foreign |
|
|
Restrict delete | ||
| notice_recipient_id_foreign |
|
|
Restrict delete | ||
| user_notify_setting_user_id_foreign |
|
|
Restrict delete | ||
| action_user_user_id_foreign |
|
|
Restrict delete | ||
| action_user_target_id_foreign |
|
|
Restrict delete | ||
| transaction_recipient_id_foreign |
|
|
Restrict delete | ||
| transaction_target_type_foreign |
|
|
Restrict delete | ||
| transaction_sender_id_foreign |
|
|
Restrict delete | ||
| article_recommend_setting_article_id_foreign |
|
|
Restrict delete | ||
| comment_author_id_foreign |
|
|
Restrict delete | ||
| comment_article_id_foreign |
|
|
Restrict delete | ||
| comment_reply_to_foreign |
|
|
Restrict delete | ||
| comment_parent_comment_id_foreign |
|
|
Restrict delete | ||
| user_badge_user_id_foreign |
|
|
Restrict delete | ||
| push_device_user_id_foreign |
|
|
Restrict delete | ||
| audio_draft_author_id_foreign |
|
|
Restrict delete | ||
| audio_draft_audio_foreign |
|
|
Restrict delete | ||
| asset_map_asset_id_foreign |
|
|
Restrict delete | ||
| asset_map_entity_type_id_foreign |
|
|
Restrict delete | ||
| article_read_count_user_id_foreign |
|
|
Restrict delete | ||
| article_read_count_article_id_foreign |
|
|
Restrict delete | ||
| notice_entity_notice_id_foreign |
|
|
Restrict delete | ||
| notice_entity_entity_type_id_foreign |
|
|
Restrict delete | ||
| log_record_user_id_foreign |
|
|
Restrict delete | ||
| draft_cover_foreign |
|
|
Restrict delete | ||
| draft_author_id_foreign |
|
|
Restrict delete | ||
| draft_upstream_id_foreign |
|
|
Restrict delete | ||
| user_boost_user_id_foreign |
|
|
Restrict delete | ||
| asset_author_id_foreign |
|
|
Restrict delete | ||
| report_article_id_foreign |
|
|
Restrict delete | ||
| report_user_id_foreign |
|
|
Restrict delete | ||
| report_comment_id_foreign |
|
|
Restrict delete | ||
| user_avatar_foreign |
|
|
Restrict delete | ||
| oauth_refresh_token_user_id_foreign |
|
|
Restrict delete | ||
| oauth_refresh_token_client_id_foreign |
|
|
Restrict delete | ||
| oauth_authorization_code_client_id_foreign |
|
|
Restrict delete | ||
| oauth_authorization_code_user_id_foreign |
|
|
Restrict delete | ||
| article_cover_foreign |
|
|
Restrict delete | ||
| article_author_id_foreign |
|
|
Restrict delete | ||
| article_upstream_id_foreign |
|
|
Restrict delete | ||
| article_draft_id_foreign |
|
|
Restrict delete | ||
| serach_history_user_id_foreign |
|
|
Restrict delete |
Check Constraints
| Table | Constraint Name | Constraint |
|---|---|---|
| transaction_obsolete | transaction_purpose_check | ((purpose = ANY (ARRAY['appreciate'::text, 'appreciate-comment'::text, 'appreciate-subsidy'::text, 'invitation-accepted'::text, 'join-by-invitation'::text, 'join-by-task'::text, 'first-post'::text, 'system-subsidy'::text]))) |
| transaction_obsolete | transaction_type_check | ((type = ANY (ARRAY['LIKE'::text, 'MAT'::text]))) |
| appreciation | appreciation_purpose_check | ((purpose = ANY (ARRAY['appreciate'::text, 'appreciate-comment'::text, 'appreciate-subsidy'::text, 'invitation-accepted'::text, 'join-by-invitation'::text, 'join-by-task'::text, 'first-post'::text, 'system-subsidy'::text]))) |
| appreciation | appreciation_type_check | ((type = ANY (ARRAY['LIKE'::text, 'MAT'::text]))) |
| user_oauth | user_oauth_provider_check | ((provider = ANY (ARRAY['facebook'::text, 'google'::text, 'medium'::text]))) |
| action_comment | action_comment_action_check | ((action = ANY (ARRAY['up_vote'::text, 'down_vote'::text]))) |
| customer | customer_provider_check | ((provider = 'stripe'::text)) |
| user_oauth_likecoin | user_oauth_likecoin_account_type_check | ((account_type = ANY (ARRAY['temporal'::text, 'general'::text]))) |
| payout_account | payout_account_provider_check | ((provider = 'stripe'::text)) |
| payout_account | payout_account_type_check | ((type = ANY (ARRAY['express'::text, 'standard'::text]))) |
| action_article | action_article_action_check | ((action = 'subscribe'::text)) |
| verification_code | verification_code_status_check | ((status = ANY (ARRAY['active'::text, 'inactive'::text, 'verified'::text, 'expired'::text, 'used'::text]))) |
| verification_code | verification_code_type_check | ((type = ANY (ARRAY['register'::text, 'email_reset'::text, 'email_reset_confirm'::text, 'password_reset'::text, 'payment_password_reset'::text, 'email_verify'::text]))) |
| punish_record | punish_record_state_check | ((state = 'banned'::text)) |
| blocklist | blocklist_type_check | ((type = ANY (ARRAY['agent_hash'::text, 'email'::text, 'domain'::text]))) |
| release | release_channel_check | ((channel = ANY (ARRAY['appStore'::text, 'googlePlay'::text]))) |
| release | release_platform_check | ((platform = ANY (ARRAY['ios'::text, 'android'::text]))) |
| action_tag | action_tag_action_check | ((action = 'follow'::text)) |
| invitation | invitation_status_check | ((status = ANY (ARRAY['pending'::text, 'activated'::text]))) |
| action_user | action_user_action_check | ((action = ANY (ARRAY['follow'::text, 'rate'::text, 'block'::text]))) |
| transaction | transaction_currency_check | ((currency = ANY (ARRAY['HKD'::text, 'LIKE'::text]))) |
| transaction | transaction_provider_check | ((provider = ANY (ARRAY['stripe'::text, 'likecoin'::text, 'matters'::text]))) |
| transaction | transaction_purpose_check | ((purpose = ANY (ARRAY['appreciate'::text, 'appreciate-comment'::text, 'appreciate-subsidy'::text, 'invitation-accepted'::text, 'join-by-invitation'::text, 'join-by-task'::text, 'first-post'::text, 'system-subsidy'::text]))) |
| transaction | transaction_state_check | ((state = ANY (ARRAY['pending'::text, 'succeeded'::text, 'failed'::text, 'canceled'::text]))) |
| comment | comment_state_check | ((state = ANY (ARRAY['active'::text, 'archived'::text, 'banned'::text, 'collapsed'::text]))) |
| user_badge | user_badge_type_check | ((type = 'seed'::text)) |
| push_device | push_device_platform_check | ((platform = ANY (ARRAY['ios'::text, 'android'::text, 'web'::text]))) |
| push_device | push_device_provider_check | ((provider = ANY (ARRAY['jpush'::text, 'fcm'::text]))) |
| feature_flag | feature_flag_flag_check | ((flag = ANY (ARRAY['on'::text, 'off'::text, 'admin'::text]))) |
| draft | draft_publish_state_check | ((publish_state = ANY (ARRAY['unpublished'::text, 'pending'::text, 'published'::text, 'error'::text]))) |
| user | user_language_check | ((language = ANY (ARRAY['zh_hant'::text, 'zh_hans'::text, 'en'::text]))) |
| user | user_role_check | ((role = ANY (ARRAY['user'::text, 'admin'::text]))) |
| user | user_state_check | ((state = ANY (ARRAY['onboarding'::text, 'active'::text, 'banned'::text, 'frozen'::text, 'archived'::text]))) |
| article | article_state_check | ((state = ANY (ARRAY['active'::text, 'banned'::text, 'archived'::text]))) |


Jane Doe
Jane Doe - Web Developer
Member since Nov. 2012
Followers
Sales
Friends
Profile
Sign out
You are applying for $500,000 of life insurance coverage for 30 years
Personal Information
Policy Details
Your Beneficiaries
About You
Your Health
Confirm
Coverage
Amount of Insurance
Plan of Insurance
Waiver of Premium
Waiver of premium.
Yes
No
Children's insurance Rider
Children's insurance rider.
Select
Number
One
Two
Three
Four
Five
Six
Payment
Payment Method
Select
NEFT
CASH
CREDIT CARD
DEBIT CARD
e-Wallet
Payment Frequency
Select
Daily
Weekly
Monthly
Yearly
Are you currently applying for insurance elsewhere?
Yes
No
Excluding this application. What is the amount of insurance currently pending with other companies?
Do you currently have insurance with another company?
Yes
No
Company
Policy Number
Face Amount
Business Insurance
Yes
No
Replacing
Yes
No
Issue Date
Beneficiary


Hello to you. Feel blessed to get to know me today. A beautiful and humble lady from the shores of Lake Victoria, clearly an embodiment of my name.
Victoria, in one word is simple. A humble lovely lady born in the great county of Siaya. A lady raised by a single mother and nurtured to excellence.Primary school, I attended Ngiya Mixed and St. Teresa's Girls primary school where i accrued 389 marks in the final exam. I proceeded to high school in St. George's Girls High School Nairobi for four years where I attained a mean grade of A-. I later on joined JKUAT for my undergraduate degree in Statistics . I am currently pusuing a software devlopment course in Moringa school.
A brief trial i made on cloning someone else's project and making the recipe. I only used the HTML programming language. Click on the link below to see more.
https//github.com/vicky-eve/cookie-recipeThis was my first attempt into creating a project in GitHub . Programming languages used were html and css. Click on this link to visit the site
https://github.com/vicky-eve/gem-from-GemBeing a recent garduate, I have only had the opportunity to work one significant place, that is, KYEOP, which is a program within the Ministry of Innovation, ICT and Youth Affairs. I work as an intern in the department of Monitoring and Evaluation as a data analyst.So far it has been a great experience.
Since I joined my Statistics class, I developed an interest in programming. The course specialized in data analysis languages such as R and Object Oriented Programming. This made me yearn for more, therefore i took the chance to join Moringa School to further my interest in programming.
Call me Victoria the explorer. I love to explore, i enjoy adventures so much and will always take every opportunity do so.I am very good in Netball when it comes to sports as well as hockey. I am also very skilled in making chapatis.


API
API Group
Mock Server
Add
east region
2018 © Mock Server v1.0.0
API Group Name:
Modify Group Name: