18 January 2026:
Sahi Pro is an enterprise grade test automation platform which can automate web, mobile, API, windows and java based applications and SAP.
This forum is now archived and is in read-only mode. Please continue discussions on our improved new Sahi Pro Community forum.
Sahi Pro is an enterprise grade test automation platform which can automate web, mobile, API, windows and java based applications and SAP.
The SAHI proxy modify my web app
Hi,
first of all, many thanks for this tool. I think i can reach my goal with it.
The web app i have to test is written for ie6. When i test it with the sahi proxy (localhost, 9999), some links, images are missing. I'm not the author of this web app, but I know there is a lot of javascript/ajax.
Can we improve the proxy, or is there any options to modify in order to have the same rendering ?
Many thanks
first of all, many thanks for this tool. I think i can reach my goal with it.
The web app i have to test is written for ie6. When i test it with the sahi proxy (localhost, 9999), some links, images are missing. I'm not the author of this web app, but I know there is a lot of javascript/ajax.
Can we improve the proxy, or is there any options to modify in order to have the same rendering ?
Many thanks
Comments
Do you see any javascript errors too?
New Members can not post links, images or email addresses until they become more active.
What can I do ?
Thanks
I'm sorry but it's not possible to point to the url.
All I can give you is log in the cmd window :
>>>> Sahi started. Listening on port:9999
>>>> Configure your browser to use this server and port as its proxy
>>>> Browse any page and CTRL-ALT-DblClick on the page to bring up the Sahi Controller
### Creating New Socket : 13401
### Creating New Socket : 13402
java.net.BindException: Address already in use: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at net.sf.sahi.util.SocketPool.get(SocketPool.java:78)
at net.sf.sahi.RemoteRequestProcessor.getReusableSocket(RemoteRequestProcessor.java:133)
at net.sf.sahi.RemoteRequestProcessor.getNormalSocket(RemoteRequestProcessor.java:128)
at net.sf.sahi.RemoteRequestProcessor.getSocketToHost(RemoteRequestProcessor.java:112)
at net.sf.sahi.RemoteRequestProcessor.processHttp(RemoteRequestProcessor.java:69)
at net.sf.sahi.RemoteRequestProcessor.processHttp(RemoteRequestProcessor.java:62)
at net.sf.sahi.ProxyProcessor.processAsProxy(ProxyProcessor.java:110)
at net.sf.sahi.ProxyProcessor.run(ProxyProcessor.java:76)
at java.lang.Thread.run(Unknown Source)
### Creating New Socket : 13403
### Creating New Socket : 13404
### Creating New Socket : 13405
in th other hand, i can give you the soucr code of the login page :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "xhtml1-strict.dtd adress">
<html>
<head>
<link type="text/css" rel="stylesheet" href="/mi/resources/38714/common/styles/common.css"/>
<script type="text/javascript" src="/mi/resources/38714/generated/current/scripts/core-scripts-1.js">/* */</script>
<script type="text/javascript">
var main = resolveMain();
if (!main)
{
main = top;
main.debug.warning("reference to <code>main</code> may have been wrongly retrieved");
}
var debug = main.debug;
var typeResolver = main.typeResolver;
var g_oResourceManager = main.g_oResourceManager;
var g_aI18NStrings = main.g_aI18NStrings;
g_oResourceManager.setResourcesPath('/mi/resources/38714');
var g_oLocalInitializer = new Initializer();
var g_oDOM = main.g_oDOM;
var g_oFrame = g_oDOM.createFrame(window);
g_oFrame.addListener(main.g_oEventListeningStopper);
var g_oDocument = g_oFrame.getDocument();
var g_sContextPath = main.g_sContextPath;
var g_sServletPath = main.g_sServletPath;
var g_oKeyboard = main.g_oKeyboard;
var g_oMouse = main.g_oMouse;
var g_oGlobalInitializer = main.g_oGlobalInitializer;
var g_sDateFormat = main.g_sDateFormat;
var g_sTimeFormat = main.g_sTimeFormat;
</script>
<script type="text/javascript" src="/mi/resources/38714/generated/current/scripts/includes-common-1.js">/* */</script>
<script type="text/javascript">g_oResourceManager.includeScript("generated/current/scripts/toolbar-listeners.js");</script>
<script type="text/javascript">g_oResourceManager.includeScript("common/scripts/core/dictionary.js");g_oResourceManager.includeScript("common/scripts/core/iconsDictionary.js");g_oResourceManager.includeScript("common/scripts/forms/form.js");g_oResourceManager.includeScript("common/scripts/forms/formField.js");g_oResourceManager.includeScript("common/scripts/forms/defaultFormFieldListener.js");g_oResourceManager.includeScript("common/scripts/forms/defaultRadioButtonListener.js");g_oResourceManager.includeScript("common/scripts/forms/formLoadingListener.js");</script>
<script type="text/javascript">g_oResourceManager.includeScript("common/scripts/forms/formComboBox.js");</script>
<script type="text/javascript">g_oResourceManager.includeScript("common/scripts/forms/checkboxManager.js");g_oResourceManager.includeScript("common/scripts/forms/comboBox/option.js");g_oResourceManager.includeScript("common/scripts/forms/comboBox/event/comboBoxContext.js");g_oResourceManager.includeScript("common/scripts/forms/comboBox/event/comboBoxEvent.js");g_oResourceManager.includeScript("common/scripts/forms/comboBox/event/comboBoxListener.js");</script>
<script type="text/javascript">g_oResourceManager.includeScript("forms/scripts/formConstants.js");g_oResourceManager.includeScript("forms/scripts/formPage.js");g_oResourceManager.includeScript("forms/scripts/formSection.js");g_oResourceManager.includeScript("forms/scripts/formItemsList.js");g_oResourceManager.includeScript("forms/scripts/formItem.js");g_oResourceManager.includeScript("forms/scripts/removeItemButtonListener.js");g_oResourceManager.includeScript("forms/scripts/editItemButtonListener.js");g_oResourceManager.includeScript("forms/scripts/sectionHeaderAddButtonClickListener.js");g_oResourceManager.includeScript("forms/scripts/validateSectionButtonListener.js");g_oResourceManager.includeScript("forms/scripts/sectionHeaderButtonListener.js");g_oResourceManager.includeScript("forms/scripts/sectionHeaderCancelButtonListener.js");g_oResourceManager.includeScript("forms/scripts/sectionHeaderClickListener.js");g_oResourceManager.includeScript("forms/scripts/textAreaLimitListener.js");g_oResourceManager.includeScript("forms/scripts/printPageListener.js");g_oResourceManager.includeScript("forms/scripts/hideDeletedItemsListener.js");g_oResourceManager.includeScript("forms/scripts/miniForm.js");g_oResourceManager.includeScript("forms/scripts/miniFormElement.js");g_oResourceManager.includeScript("forms/scripts/miniFormElementField.js");g_oResourceManager.includeScript("forms/scripts/miniformTableRowListener.js");g_oResourceManager.includeScript("forms/scripts/miniFormTable.js");g_oResourceManager.includeScript("forms/scripts/miniFormElementTable.js");g_oResourceManager.includeScript("forms/scripts/miniFormElementFieldTable.js");g_oResourceManager.includeScript("forms/scripts/formBlocsUtils.js");</script>
<script type="text/javascript">g_oResourceManager.includeScript("common/scripts/ajax/ajax.js");g_oResourceManager.includeScript("forms/scripts/ajaxCheckConcurrentSave.js");</script>
<script type="text/javascript">
var g_oNavigationBar = null;
var g_oMasterLayoutManager = null;
var g_oScrollbarManager = null;
var g_oCheckboxManager = null;
g_oLocalInitializer.addInstruction(function()
{
g_oNavigationBar = main.g_oNavigationBar;
g_oDocument.addListener(main.getClassInstance("DefaultPageLoadingListener"));
g_oCheckboxManager = main.getClassInstance("CheckboxManager");
});
g_oResourceManager.addInitializer(g_oLocalInitializer);
</script>
<script type="text/javascript" src="/mi/resources/38714/generated/current/scripts/includes-common-4.js">/* */</script>
<script type="text/javascript" src="/mi/resources/38714/messages/scripts/messagesFrameCommands.js">/* */</script>
<script type="text/javascript">g_oResourceManager.includeScript("messages/scripts/messageClickListener.js");</script>
<link type="text/css" rel="stylesheet" href="/mi/resources/38714/menu/styles/menu.css"/>
<link type="text/css" rel="stylesheet" href="/mi/resources/38714/toolbars/styles/toolbar.css"/>
<script type="text/javascript" src="/mi/resources/38714/menu/scripts/loginForm.js">/**/</script>
</head>
<body>
<center>
<div class="boxGroup">
<div class="box">
<div class="decoration borderTopLeft">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration borderTop">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration borderTopRight">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration borderLeft">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="center">
<div class="icon">
<img class="itemIcon" src="/mi/resources/38714/menu/images/items/connection.gif"/>
</div>
<span class="itemName">Identification</span>
</div>
<div class="decoration borderRight">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration borderBottomLeft">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration borderBottom">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration borderBottomRight">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
</div>
<form method="POST" id="form" action="/mi/servlet/Controller/DoLogin">
<div class="decoration subElementBorderLeft">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="subElementCenter">
<div class="subElementLabel">Utilisateur</div>
<input name="login_user" id="login_user" class="subElementField"/>
</div>
<div class="decoration subElementBorderRight">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration subElementCorner">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration subElementBorderBottom">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration subElementCorner">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration subElementBorderLeft">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="subElementCenter">
<div class="subElementLabel">Mot de passe</div>
<input type="password" name="login_password" id="login_password" class="subElementField"/>
</div>
<div class="decoration subElementBorderRight">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<input name="login_screenwidth" id="login_screenwidth" type="hidden"/>
<input name="login_screenheight" id="login_screenheight" type="hidden"/>
</form>
<div class="decoration subElementCorner">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration subElementBorderBottom">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration subElementCorner">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<script type="text/javascript">
g_oLocalInitializer.addInstruction( function(){
var oArgs=new Array();
oArgs["cmd_target_frame"]="_parent";
var g_oFieldsListener = new top.DefaultFormFieldListener(oArgs);
g_oDocument.getElement("login_user").addListener(g_oFieldsListener);
g_oDocument.getElement("login_user").setFocus();
g_oDocument.getElement("login_password").addListener(g_oFieldsListener);
});
</script>
</div>
<div class="boxGroup">
<div class="box">
<div class="decoration subElementBorderLeft">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="toolbarContainer subElementCenter">
<table class="toolBar toolBarRight">
<tr>
<td class="toolBarElementSlot">
<img alt="" class="toolBarElement" src="/mi/resources/38714/toolbars/images/familySeparator-22px.gif"/>
</td>
<td class="toolBarButtonSlot" id="CommandValidateLogon">
<img class="button" src="/mi/resources/38714/common/images/commands/validate.gif" title="Valider" alt="Valider"/>
</td>
<td class="toolBarElementSlot">
<img alt="" class="toolBarElement" src="/mi/resources/38714/toolbars/images/buttonSeparator-22px.gif"/>
</td>
<td class="toolBarButtonSlot" id="CommandReset">
<img class="button" src="/mi/resources/38714/common/images/commands/cancel.gif" title="Annuler" alt="Annuler"/>
</td>
</tr>
</table>
<script type="text/javascript">
g_oLocalInitializer.addInstruction(function()
{
var addDocumentListener = false;
var oListenerElement = null;
var oListenerDocument = null;
var oShortcut = null;
addDocumentListener = false;
var oArgs = new Array();oArgs["cmd"] = "ValidateLogon";oArgs["cmd_target_frame"]="_parent";
oListenerElement = main.getClassInstance("ToolBarButtonListener", ValidateLogon, oArgs);
oListenerDocument = main.getClassInstance("ToolBarButtonListener", ValidateLogon, oArgs);
oShortcut = main.getClassInstance("Shortcut");
oShortcut.addMouseEvent(main.MouseEvent.MOUSE_PRESSED, main.MouseEvent.LEFT_BUTTON);
oListenerElement.addShortcut(oShortcut);
oShortcut = main.getClassInstance("Shortcut");
oShortcut.addKeyboardEvent(main.KeyboardEvent.KEY_PRESSED, main.KeyboardEvent.K_NEWLINE);
oListenerDocument.addShortcut(oShortcut);
addDocumentListener = true;
oShortcut = main.getClassInstance("Shortcut");
oShortcut.addKeyboardEvent(main.KeyboardEvent.KEY_PRESSED, main.KeyboardEvent.K_RETURN);
oListenerDocument.addShortcut(oShortcut);
addDocumentListener = true;
g_oDocument.getElement("CommandValidateLogon").addListener(oListenerElement);
if (addDocumentListener == true)
{
g_oDocument.addListener(oListenerDocument);
}
addDocumentListener = false;
var oArgs = new Array();oArgs["cmd"] = "Reset";
oListenerElement = main.getClassInstance("ToolBarButtonListener", eventCancel, oArgs);
oListenerDocument = main.getClassInstance("ToolBarButtonListener", eventCancel, oArgs);
oShortcut = main.getClassInstance("Shortcut");
oShortcut.addMouseEvent(main.MouseEvent.MOUSE_PRESSED, main.MouseEvent.LEFT_BUTTON);
oListenerElement.addShortcut(oShortcut);
g_oDocument.getElement("CommandReset").addListener(oListenerElement);
if (addDocumentListener == true)
{
g_oDocument.addListener(oListenerDocument);
}
});
</script>
</div>
<div class="decoration subElementBorderRight">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration subElementCorner">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration subElementBorderBottom">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
<div class="decoration subElementCorner">
<img src="/mi/resources/38714/common/images/gizmo.gif"/>
</div>
</div>
</div>
<div class="boxGroup">
<div class="littleLabel">mi 2.3.1-8.p3-PERF
- Revision 38714</div>
</div>
</center>
<script type="text/javascript">
g_oDOM.getFrame(g_oDOM.getFrameIdentifier(window)).onFrameLoaded();
</script>
</body>
</html>
I will join sceenshots as soon as possible.
But it seems that there is a difference betwwen these two procedure :
1 - launch sahi.bat, launch ie6, modify the proxy configuration to the sahi one
and
2 - launch ie6, modify the proxy configuration to the sahi one, colse the ie6 window (or not), launch sahi.bat
I continue my investigation this way.
Thanks a lot
PS : Sorry for my english
PPS : I remove the dtd adress in order to be able to post