i wish there was an additional "_wait(maxTime, condition)" function that would stop execution if condition returns false.
as of now, it seems as if "wait + condition" continues execution no matter the outcome of "condition", which makes it an "OR" test, but my suggestion would be for an "AND" test, i.e.:
wait, up until maxTime is reached, and if condition is still false, then stop execution.
i want this because of network/server response timing issues, specifically related to ajax operations.
UPDATE
i just posted this as a discussion in the sahi forums:
suggestion for _wait: stop execution if condition returns false
UPDATE, WORKAROUND
to achieve the same thing today, it looks like you'd have to code it like this:
_wait(10000, _assertTrue(_isVisible(_link("detailsForm:saveAgreementBtn"))));
_assertTrue(_isVisible(_link("detailsForm:saveAgreementBtn")));
and this gives the same functionality, but with less code, but also may look potentially confusing:
_wait(10000, _isVisible(_link("detailsForm:saveAgreementBtn")));
_assertTrue(_isVisible(_link("detailsForm:saveAgreementBtn")));
IT, computer and programming tutorials and tips that i couldnt find anywhere else using google, from my daily work as a Senior Developer of solutions using Java and Linux.
The best place to *find* answers to programming/development questions, imo, however it's the *worst* place to *ask* questions (if your first question/comment doesn't get any up-rating/response, then u can't ask anymore questions--ridiculously unrealistic), but again, a great reference for *finding* answers.
My Music (Nickleus)
20140331
20140321
[SOLVED] sahi, primefaces: p:dataTable no rendered table tag id
i'm updating our sahi test scripts for our new primefaces frontend and ran into a difficulty when trying to select a specific table row cell.
this page gives a hint as to how to select specific table cells:
http://sahi.co.in/docs/faq/get-cell-data.html
using this format:
_cell(_table("<table_identifier>"), x-1, y-1)
but the problem is that when a primefaces p:dataTable gets rendered to HTML, the table is enclosed in a div tag, and that div tag gets the id value set in the p:dataTable code, and the actual table tag doesn't have an id.
i solved my problem like this:
_cell(_table(1, _in(_div("selectMember:selectMemberTable"))), 1, 1)
here i specify the *second* table (there's a table in the header too), which is the actual dataTable table (0-based indexing, so value "1").
however, from what i can see, the sahi documentation is confusing concerning "x" and "y", if you interpret "x" to mean column (left<->right position), like i do.
"...1, 1)", in reality, means "row 2 (x), column 2 (y)" (0-based indexing, so "1, 1")
------------
as a side note, i found this sahi script code useful/interesting too:
_table(0, _in(_div("selectMember:selectMemberTable"))).rows[0].style='background-color:red'
which changes the background color of the first row of the first table to red.
this page gives a hint as to how to select specific table cells:
http://sahi.co.in/docs/faq/get-cell-data.html
using this format:
_cell(_table("<table_identifier>"), x-1, y-1)
but the problem is that when a primefaces p:dataTable gets rendered to HTML, the table is enclosed in a div tag, and that div tag gets the id value set in the p:dataTable code, and the actual table tag doesn't have an id.
i solved my problem like this:
_cell(_table(1, _in(_div("selectMember:selectMemberTable"))), 1, 1)
here i specify the *second* table (there's a table in the header too), which is the actual dataTable table (0-based indexing, so value "1").
however, from what i can see, the sahi documentation is confusing concerning "x" and "y", if you interpret "x" to mean column (left<->right position), like i do.
"...1, 1)", in reality, means "row 2 (x), column 2 (y)" (0-based indexing, so "1, 1")
------------
as a side note, i found this sahi script code useful/interesting too:
_table(0, _in(_div("selectMember:selectMemberTable"))).rows[0].style='background-color:red'
which changes the background color of the first row of the first table to red.
sahi, primefaces: "ReferenceError: PrimeFaces is not defined". solution: just rerun the sahi script
sometimes when i run a sahi script to test our primefaces ui, the script times out with the following error:
ReferenceError: PrimeFaces is not defined (http://localhost/pages/listTransportAgreements.jsf:278)
when i rerun the script, it usually goes away, so i'm not quite sure why it works sometimes and other times it doesn't.
ReferenceError: PrimeFaces is not defined (http://localhost/pages/listTransportAgreements.jsf:278)
when i rerun the script, it usually goes away, so i'm not quite sure why it works sometimes and other times it doesn't.
20140320
primefaces p:commandLink oncomplete attribute referencing non-existent ID was messing up table filter and sort functions
i had this primefaces delete-icon code in a table row:
<p:commandLink id="deletelink" title="#{msg['label.delete']}"
action="#{ta_mappingObject.setCurrentItemAndPanelToShow(agreement, 'deleteTA')}"
rendered="#{!ta_mappingObject.createFromRequestDetails and userMenuBean.canEditAgreement()}"
oncomplete="PF('confDeleteAgreement').show();">
<h:graphicImage value="/images/icons/delete.gif" style="border:0" />
</p:commandLink>
and stuff on the page like filtering and sorting wasn't working, so i figured out that because that link was referencing a dialog ID that didn't exist, it was messing up the whole page, so i changed it to this:
<p:commandLink id="deletelink" title="#{msg['label.delete']}"
action="#{ta_mappingObject.setCurrentItemAndPanelToShow(agreement, 'deleteTA')}"
rendered="#{!ta_mappingObject.createFromRequestDetails and userMenuBean.canEditAgreement()}"
oncomplete="PF('andIdThatExists').show();">
<h:graphicImage value="/images/icons/delete.gif" style="border:0" />
</p:commandLink>
and everything started working again.
20140319
primefaces - show p:modalPanel from java backing bean / controller class and update specific id or collection of id strings
here's how you show a p:modalPanel from a java backing bean call:
org.primefaces.context.RequestContext.getCurrentInstance().execute("myModalPanelWV.show()");
"modalPanelWV" is the widgetVar value, e.g.:
<p:modalPanel id="myModalPanel" widgetVar="myModalPanelWV" ...
update an id from backing bean:
org.primefaces.context.RequestContext.getCurrentInstance().update("growl");
OR update a Collection<String> of IDs:
org.primefaces.context.RequestContext.getCurrentInstance().update(myCollectionOfStringIds);
org.primefaces.context.RequestContext.getCurrentInstance().execute("myModalPanelWV.show()");
"modalPanelWV" is the widgetVar value, e.g.:
<p:modalPanel id="myModalPanel" widgetVar="myModalPanelWV" ...
update an id from backing bean:
org.primefaces.context.RequestContext.getCurrentInstance().update("growl");
OR update a Collection<String> of IDs:
org.primefaces.context.RequestContext.getCurrentInstance().update(myCollectionOfStringIds);
20140317
[SOLVED] jboss 7 jdk 6 startup in debug opens FileNotFoundException.class: Suspended (exception FileNotFoundException) jdk/jre/lib/zi/UTC
i started to encounter something weird when i was starting up my local jboss 7 instance in debug mode (using jdk 6):
FileNotFoundException.class would open in the eclipse debugger
with this error message in the console:
Suspended (exception FileNotFoundException) ~/workspaceEclipse/tcTrunk/jdk/jre/lib/zi/UTC
i figured out that "zi" means "ZoneInfoFile"
i can see that there's a UTC file in zi/Etc/:
~/workspaceEclipse/tcTrunk/jdk/jre/lib/zi/Etc/UTC
SOLUTION
all i had to do to fix this was copy the file to the expected folder:
cp ~/workspaceEclipse/tcTrunk/jdk/jre/lib/zi/Etc/UTC ~/workspaceEclipse/tcTrunk/jdk/jre/lib/zi/
FileNotFoundException.class would open in the eclipse debugger
with this error message in the console:
Suspended (exception FileNotFoundException) ~/workspaceEclipse/tcTrunk/jdk/jre/lib/zi/UTC
i figured out that "zi" means "ZoneInfoFile"
i can see that there's a UTC file in zi/Etc/:
~/workspaceEclipse/tcTrunk/jdk/jre/lib/zi/Etc/UTC
SOLUTION
all i had to do to fix this was copy the file to the expected folder:
cp ~/workspaceEclipse/tcTrunk/jdk/jre/lib/zi/Etc/UTC ~/workspaceEclipse/tcTrunk/jdk/jre/lib/zi/
20140311
[SOLVED] sahi include script does not exist
today's problem started out like this:
### verify_any_transport_requests.sah ###
_include("functions/common_functions.sah");
_include("functions/common_vars.sah");
_include("functions/transport_request_functions.sah");
tc_login($buyer_user_unil, $buyer_pass_unil);
listAllTRQsUnfiltered();
tc_logout();
###########################
every time i'd try running this script i'd get the following error in the sahi log:
ERROR
Script: /home/nick/workspaceEclipse/tcTrunk/testing/functional_testing/stage_1/sahi/functions/transport_request_functions.sah does not exist.
since i knew that the include file indeed did exist, i figured it had to be something wrong with the code. then i saw this code in transport_request_functions.sah:
_link("filtermenubarForm:filterBtn");
it should have been:
_click(_link("filtermenubarForm:filterBtn"));
it seems like that was the problem.
### verify_any_transport_requests.sah ###
_include("functions/common_functions.sah");
_include("functions/common_vars.sah");
_include("functions/transport_request_functions.sah");
tc_login($buyer_user_unil, $buyer_pass_unil);
listAllTRQsUnfiltered();
tc_logout();
###########################
every time i'd try running this script i'd get the following error in the sahi log:
ERROR
Script: /home/nick/workspaceEclipse/tcTrunk/testing/functional_testing/stage_1/sahi/functions/transport_request_functions.sah does not exist.
since i knew that the include file indeed did exist, i figured it had to be something wrong with the code. then i saw this code in transport_request_functions.sah:
_link("filtermenubarForm:filterBtn");
it should have been:
_click(_link("filtermenubarForm:filterBtn"));
it seems like that was the problem.
Subscribe to:
Posts (Atom)