How to check for a row value for paginated records ?
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-31-2010
01:11 AM
03-31-2010
01:11 AM
How to check for a row value for paginated records ?
Hi,
I have a need to find out the status of an invoices generated dynamically.I am able to find the invoice number/status for a fixed set of records(in my case 10/page).So my question is for pagination how will I find the concerned link and go to the page for a particular invoice # and find the status. I am testing pages of Oracle EBS.
Thanks,
Girish
I have a need to find out the status of an invoices generated dynamically.I am able to find the invoice number/status for a fixed set of records(in my case 10/page).So my question is for pagination how will I find the concerned link and go to the page for a particular invoice # and find the status. I am testing pages of Oracle EBS.
Thanks,
Girish
Girish
27 REPLIES 27
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-21-2010
01:40 AM
04-21-2010
01:40 AM
Good Morning David !
I had this already tried out.Please see the screenshot which shows that object doesn't exist,that's surprising.in help topics also,innerText is recommended.
That's easy to see because following code
Sys.Process("iexplore").Page("http:/XXXXX.com/OA_HTML/OA.jsp?page=/oracle/apps/po/document/order/webui/OrdersSummaryHeadersPG&OAHP=PO_BUYER_HOME_PAGE&OASF=PO_ORDERS_SUMMARY&language_code=US&OAFMID=83526&searchType=customize&fwkQBSearchTypeSource=/oracle/apps/po/document/order/webui/OrdersSummaryHeadersPG__HeaderQueryRN__201&_ti=888743756&retainAM=N&addBreadCrumb=N&OAPB=PO_BRAND&oapc=7&oas=gotAlpy2tTZu4kSu_ZWNuw..").Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table(1).Cell(1, 0).Panel(0).Table(0).Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(3).Table(0).Cell(1, 0).Table(0).Cell(7, 2).innerText
in object finder is shown in issue4.jpg and issue5.jpg reveals why it is ,I believe.
issue6.jpg clearly shows that within the cell ,it has other objects like table and not just the link object that's contained.
Important point i believe is that only for link I see this for some of the forms others its just that object in the cell,which makes it difficult to write a function for all forms to perform an operation like clicling a link/selection of radiobtn based on the number(typically invoice/PO) displayed in a row. So any alternative solution ?
I had this already tried out.Please see the screenshot which shows that object doesn't exist,that's surprising.in help topics also,innerText is recommended.
That's easy to see because following code
Sys.Process("iexplore").Page("http:/XXXXX.com/OA_HTML/OA.jsp?page=/oracle/apps/po/document/order/webui/OrdersSummaryHeadersPG&OAHP=PO_BUYER_HOME_PAGE&OASF=PO_ORDERS_SUMMARY&language_code=US&OAFMID=83526&searchType=customize&fwkQBSearchTypeSource=/oracle/apps/po/document/order/webui/OrdersSummaryHeadersPG__HeaderQueryRN__201&_ti=888743756&retainAM=N&addBreadCrumb=N&OAPB=PO_BRAND&oapc=7&oas=gotAlpy2tTZu4kSu_ZWNuw..").Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table(1).Cell(1, 0).Panel(0).Table(0).Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(3).Table(0).Cell(1, 0).Table(0).Cell(7, 2).innerText
in object finder is shown in issue4.jpg and issue5.jpg reveals why it is ,I believe.
issue6.jpg clearly shows that within the cell ,it has other objects like table and not just the link object that's contained.
Important point i believe is that only for link I see this for some of the forms others its just that object in the cell,which makes it difficult to write a function for all forms to perform an operation like clicling a link/selection of radiobtn based on the number(typically invoice/PO) displayed in a row. So any alternative solution ?
Girish
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-23-2010
02:30 AM
04-23-2010
02:30 AM
Is there anything I need to explain further ?
Girish
Girish
Girish
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-26-2010
01:43 AM
04-26-2010
01:43 AM
Hi Girish,
Most probably, the cause of the problem is that you choose an incorrect cell object to find the text. The previous script you sent worked with the 'Cell(6, 2)' object, while the object in the latest images you posted has the 'Cell(7, 2)' name. Since the needed cell can change from time to time, I recommend that you use a higher level parent object to search for the needed link.
...
PropArray = Array("ObjectType", "innerText")
ValuesArray = Array("Link", "100187")
Set tableObj = Sys.Process("iexplore").Page("*").Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table(1).Cell(1, 0).Panel(0).Table(0).Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(3).Table(0).Cell(1, 0).Table(0)
If Not tableObj.Exists Then
Log.Error "The table object is not found"
Runner.Stop
End If
Set linkObj = tableObj.FindChild(PropArray, ValuesArray, 15)
If linkObj.Exists Then
Log.Message "The link is found"
Else
Log.Error "The link is not found"
End If
...
--
Dmitry Nikolaev
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
Dmitry Nikolaev
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-26-2010
02:42 AM
04-26-2010
02:42 AM
Thanks David ! You are right,I indeed did that earlier. As I said earlier we have screens which have paginated records and we need to test whether it performs some operation(it could be clicking on a rdb/link or even status check),so I am trying to create a function which will loop thro' the rows and cells based on inputs ; they are parent object(i used the higher level object),text to search and possibly the type of object. As a sample I tried to use i/p params as object and matchtext.Surprisingly innerText is not able to match and function returns false,I also tried Title. Reason is I think is evident from attached issue7.jpg.SO which property should I use to match ?
---------------------------------------------------------------------------------
sub PO35
Dim iexplore
Dim page
Dim table
Dim passwordBox
Dim cell
Dim panel
Call TestedApps.iexplore.Run(1, True)
Set iexplore = Sys.Process("iexplore")
Call iexplore.ToURL("http:/XXXX.org:8006/")
Set page = iexplore.Page("http://XXXX.org:8006/")
page.Wait
Set table = page.Form("DefaultFormName").Panel(0).Panel(2).Table("LoginRN").Cell(1, 1).Table("region144").Cell(1, 1).Table("region14")
table.Cell(0, 2).Table("usernameField_xc_").Cell(0, 2).Textbox("usernameField").Text = "test"
Set passwordBox = table.Cell(1, 2).Table("passwordField_xc_").Cell(0, 2).PasswordBox("passwordField")
passwordBox.Text = "oracle"
Call passwordBox.Keys("[Enter]")
Call aqUtils.Delay(2000,"Login")
page.Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table("topTableLayoutContainer").Cell(0, 0).Table("leftLayoutRN").Cell(1, 0).Table("region1").Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(1).Table(0).Cell(0, 0).Table(0).Cell(1, 3).Link("AppsNavLink").Click
page.Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table("topTableLayoutContainer").Cell(0, 0).Table("leftLayoutRN").Cell(1, 0).Table("region1").Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(1).Table(0).Cell(0, 1).Table(0).Cell(2, 2).Link("N61").Click
Call aqUtils.Delay(5000,"Login")
Set cell = page.Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table(1).Cell(1, 0).Panel(0).Table(0).Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(1).Table("customizationsPoplist_xc_").Cell(0, 2)
Call cell.Select("customizationsPoplist").ClickItem("My Open Orders")
cell.Button(0).Click
Set panel = page.Form("DefaultFormName").Panel(0)
PropArray = Array("ObjectType", "Title")
ValuesArray = Array("Link", "100187")
if Sys.Process("iexplore").Page("*").Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table(1).Cell(1, 0).Panel(0).Table(0).Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(3).Table(0).Cell(1, 0).Table(0).RowCount>1 Then
set o=Sys.Process("iexplore").Page("*").Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table(1).Cell(1, 0).Panel(0).Table(0).Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(3).Table(0).Find(PropArray,ValuesArray, 20000)
Log.Message(o.ObjectType) ' I 'm able to identify the type
set pg=GetPage()
pg.Wait
'Get table
set tbl=pg.Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table(1).Cell(1, 0).Panel(0).Table(0).Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(3).Table(0).Cell(1, 0).Table(0)
check= LoopCells(tbl,"100187") ' Function
Log.Message(check)
end if
end sub
Function GetPage()
Set p = Sys.Process("iexplore")
Set GetPage =p.Page("*")
End Function
Function LoopCells(tableobj,matchtext)
if tableobj.exists Then
Log.Message("tableobj exists ")
'log.Message(tableobj.Cell(1, 2).innerText)
Else
exit function
end if
For i = 1 To tableobj.RowCount-1
For j = 0 To tableobj.ColumnCount(i)-1
Set Cell = tableobj.Cell(i, j)
'Log.Message(Cell.ObjectType) 'Returns Null .
if j=2 then
'Log.Message ("Cell " & j & ": " & Cell.innerText & " row :" & i)
Log.Message(Cell.ObjectType)
Log.Message ("Cell " & j & ": " & Cell.innerText & " row :" & i)
end if
if (Cell.innerText=matchtext) Then
Result = CBool(1 + 1 = 2)
LoopCells=Result
exit function
else
Result = CBool(1 + 1 = 5)
LoopCells=Result
end if
Next
Next
End Function
---------------------------------------------------------------------------------
sub PO35
Dim iexplore
Dim page
Dim table
Dim passwordBox
Dim cell
Dim panel
Call TestedApps.iexplore.Run(1, True)
Set iexplore = Sys.Process("iexplore")
Call iexplore.ToURL("http:/XXXX.org:8006/")
Set page = iexplore.Page("http://XXXX.org:8006/")
page.Wait
Set table = page.Form("DefaultFormName").Panel(0).Panel(2).Table("LoginRN").Cell(1, 1).Table("region144").Cell(1, 1).Table("region14")
table.Cell(0, 2).Table("usernameField_xc_").Cell(0, 2).Textbox("usernameField").Text = "test"
Set passwordBox = table.Cell(1, 2).Table("passwordField_xc_").Cell(0, 2).PasswordBox("passwordField")
passwordBox.Text = "oracle"
Call passwordBox.Keys("[Enter]")
Call aqUtils.Delay(2000,"Login")
page.Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table("topTableLayoutContainer").Cell(0, 0).Table("leftLayoutRN").Cell(1, 0).Table("region1").Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(1).Table(0).Cell(0, 0).Table(0).Cell(1, 3).Link("AppsNavLink").Click
page.Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table("topTableLayoutContainer").Cell(0, 0).Table("leftLayoutRN").Cell(1, 0).Table("region1").Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(1).Table(0).Cell(0, 1).Table(0).Cell(2, 2).Link("N61").Click
Call aqUtils.Delay(5000,"Login")
Set cell = page.Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table(1).Cell(1, 0).Panel(0).Table(0).Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(1).Table("customizationsPoplist_xc_").Cell(0, 2)
Call cell.Select("customizationsPoplist").ClickItem("My Open Orders")
cell.Button(0).Click
Set panel = page.Form("DefaultFormName").Panel(0)
PropArray = Array("ObjectType", "Title")
ValuesArray = Array("Link", "100187")
if Sys.Process("iexplore").Page("*").Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table(1).Cell(1, 0).Panel(0).Table(0).Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(3).Table(0).Cell(1, 0).Table(0).RowCount>1 Then
set o=Sys.Process("iexplore").Page("*").Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table(1).Cell(1, 0).Panel(0).Table(0).Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(3).Table(0).Find(PropArray,ValuesArray, 20000)
Log.Message(o.ObjectType) ' I 'm able to identify the type
set pg=GetPage()
pg.Wait
'Get table
set tbl=pg.Form("DefaultFormName").Panel(0).Panel(2).Panel(0).Panel(1).Table(1).Cell(1, 0).Panel(0).Table(0).Cell(3, 0).Table(0).Cell(0, 0).Panel(0).Panel(3).Table(0).Cell(1, 0).Table(0)
check= LoopCells(tbl,"100187") ' Function
Log.Message(check)
end if
end sub
Function GetPage()
Set p = Sys.Process("iexplore")
Set GetPage =p.Page("*")
End Function
Function LoopCells(tableobj,matchtext)
if tableobj.exists Then
Log.Message("tableobj exists ")
'log.Message(tableobj.Cell(1, 2).innerText)
Else
exit function
end if
For i = 1 To tableobj.RowCount-1
For j = 0 To tableobj.ColumnCount(i)-1
Set Cell = tableobj.Cell(i, j)
'Log.Message(Cell.ObjectType) 'Returns Null .
if j=2 then
'Log.Message ("Cell " & j & ": " & Cell.innerText & " row :" & i)
Log.Message(Cell.ObjectType)
Log.Message ("Cell " & j & ": " & Cell.innerText & " row :" & i)
end if
if (Cell.innerText=matchtext) Then
Result = CBool(1 + 1 = 2)
LoopCells=Result
exit function
else
Result = CBool(1 + 1 = 5)
LoopCells=Result
end if
Next
Next
End Function
Girish
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-28-2010
01:33 AM
04-28-2010
01:33 AM
Can this be done ?
Girish
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-28-2010
10:19 PM
04-28-2010
10:19 PM
Hi Girish,
I still do not understand why you are iterating through rows and cells instead of using the Find method.
If you need to find a table row containing a link with some specific text to operate on an object of this row, you can first find the link and then get the index of the corresponding row using this link object.
PropArray = Array("ObjectType", "innerText")
ValuesArray = Array("Link", "100187")
...
Set linkObj = tableObj.FindChild(PropArray, ValuesArray, 15)
rowIndex = linkObj.Parent.Parent.Parent.Parent.Parent.RowIndex
--
Dmitry Nikolaev
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
Dmitry Nikolaev
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-29-2010
01:43 AM
04-29-2010
01:43 AM
Correct David. My goal is to write a function which can be used across pages which render tabular data to find a status /perform an action based on the value passed.Hindrance in my method is that compare doesn't work and in your code , rowIndex =
linkObj.Parent.Parent.Parent.Parent.Parent.RowIndex, doesn't that inject dependency where in one would need to know the hierarchy in advance ? Would I be able to write a function to achieve that ?I guess that also depends on the framework used to render the objects ?
Could you point me in the right direction ?
linkObj.Parent.Parent.Parent.Parent.Parent.RowIndex, doesn't that inject dependency where in one would need to know the hierarchy in advance ? Would I be able to write a function to achieve that ?I guess that also depends on the framework used to render the objects ?
Could you point me in the right direction ?
Girish
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-01-2010
07:23 PM
05-01-2010
07:23 PM
Hi Girish,
I think that the approach you use is error-prone and more complex than the one I suggest. It is possible to improve my solution by looking for the needed parent object instead of getting a parent object on a hard-coded level of hierarchy. The needed parent object can be identified by one of its properties like 'id' or 'className'. Please post here or send me via the Contact Support form the HTML code of the entire table with all records and I will try to find such a property.
--
Dmitry Nikolaev
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
Dmitry Nikolaev
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️

- « Previous
- Next »
- « Previous
- Next »