Ghost Elements

85 views
Skip to first unread message

Wayne Gunn

unread,
Apr 26, 2022, 7:15:53 AM4/26/22
to Selenium Users
Hey, I am fairly new to selenium and I like it very much but I ran into an issue I hope somebody here can enlighten me on. So I am trying to read the content of a certain page the structure of which is a main table in which records are arranged in groups of 3 rows so the number of  rows should be in multiples of 3, the third of which is just a blank row or separator. The first row has personal information, and the middle row has case info for the person in the first. None of this detail matters much to the questions I want to ask, I just gave it up for context.

So lets say the first to 4th persons are Adam, Barry, Collin, and Derrick in rows 1, 4, 7, and 10. Whenever I use xpath to list the content of each group, Barry does not get listed, as if it doesn't exist. To see if it was just a bad xpath (which with my novice is possible), I exported the whole main table's content to a text file and did a search for that name and it still doesn't exist.

Does anybody here have a clue why something like that would happen? 
=======================================================================

Another question, this about xpath syntax. Given the data structure I described above, using a for or do loop to get each group, how can I target the group by a known element in the case row, then use that to target the person row above it, for each group?


Thank you

Vinny

unread,
Apr 26, 2022, 4:09:19 PM4/26/22
to Selenium Users
Hi Jon,
First to answer your question we need the source code of the table you are trying to get the element of. Also what the xpath have you tried to get the text of that element. Please post your code too so it will make us easy to explain the solution.

"how can I target the group by a known element in the case row"
Again we need your source code to get the solution.

Thanks

Wayne Gunn

unread,
Apr 26, 2022, 9:49:23 PM4/26/22
to Selenium Users
I figured out why the first issue occurred. I was just looking at a stale instance of the data and the missing record was removed by the server so I only need help on the second issue. It was a big messy file and hard to look at so I copied enough of it to display the structure. Again, the data is arranged in groups of 3 rows, the 3rd of which is blank. The 2 upper rows have lookup text like 'Name:' in the top row, and 'Offense' in the second. I use syntax like: 
Cnt = TblMain.FindElementsByXPath("tbody/tr/td/table/tbody/tr/td[contains(text(),'Name')]").Count
to count how many records there but I want to learn the language and I assume I could make a more elaborate specification which includes data from both rows. The count would be the same cuz either way I am counting the groups. I just want to do it the safer way. From what I have seen there are no orphaned rows. The integrity of 1 to 1 is held throughout the file. So the ultimate question is how do I write an xpath that targets each group in turn, using an incrementing index to target each group?

There doesn't seem to be a utility here to insert a code block so I will paste the code in the body. Thank you


<body>
<table border="0">
<tr>
<td>Name: <b>ABREU HERRERA, HANOI NORBERTO </b></td>
</tr>
<tr>
<td>
                    Address: <b>3965 PENBROOK ST,
                    ODESSA TX,
                    TX </b></td>
</tr>
<tr>
<td>Attorney: <b>NO</b></td>
</tr>
</table>
</td>
</tr>
<tr align="right">
<td>
<table border="1" width="100%" cellpadding="0" style="border-collapse: collapse" bordercolor="#C0C0C0">
<thead align="center">
<tr>
<td><b>Offense</b></td>
<td><b>Class</b></td>
<td><b>Court</b></td>
<td><b>County</b></td>
<td><b>Warrant Number</b></td>
<td><b>Arrest Date</b></td>
<td><b>Bond</b></td>
<td><b>Fines</b></td>
<td><b>Disposition</b></td>
<td><b>Years</b></td>
<td><b>Months</b></td>
<td><b>Weeks</b></td>
<td><b>Days</b></td>
<td><b>Hours</b></td>
</tr>
</thead>
<tr>
<td align="center" width="35%">FAILURE TO APPEAR</td>
<td align="center">MC</td>
<td align="center" width="5%">JP4</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">4190691</td>
<td align="center" width="5%">08/11/21</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="5%">$300.00</td>
<td align="center" width="30%">LAID OUT FINES</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
<tr class="evenRow">
<td align="center" width="35%">DISREGARDED STOP SIGN</td>
<td align="center">MC</td>
<td align="center" width="5%">JP4</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">4182332</td>
<td align="center" width="5%">08/11/21</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="5%">$367.90</td>
<td align="center" width="30%">LAID OUT FINES</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
<tr>
<td align="center" width="35%">INTOX MANSLAUGHTER W/VEHICLE</td>
<td align="center">F3</td>
<td align="center" width="5%">238</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">CR54603</td>
<td align="center" width="5%">08/11/21</td>
<td align="center" width="5%">$150,000.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">PENDING DISPOSITION</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
</table>
</td>
</tr>
<tr height="20">
<td> </td>
</tr>
<tr>
<td>
<table border="0">
<tr>
<td>Name: <b>ACOSTA FLORES, KEVIN ISACC </b></td>
</tr>
<tr>
<td>
                    Address: <b>1209 MORAN ST,
                    MIDLAND,
                    TX 79701</b></td>
</tr>
<tr>
<td>Attorney: <b>I JACKSON</b></td>
</tr>
</table>
</td>
</tr>
<tr align="right">
<td>
<table border="1" width="100%" cellpadding="0" style="border-collapse: collapse" bordercolor="#C0C0C0">
<thead align="center">
<tr>
<td><b>Offense</b></td>
<td><b>Class</b></td>
<td><b>Court</b></td>
<td><b>County</b></td>
<td><b>Warrant Number</b></td>
<td><b>Arrest Date</b></td>
<td><b>Bond</b></td>
<td><b>Fines</b></td>
<td><b>Disposition</b></td>
<td><b>Years</b></td>
<td><b>Months</b></td>
<td><b>Weeks</b></td>
<td><b>Days</b></td>
<td><b>Hours</b></td>
</tr>
</thead>
<tr>
<td align="center" width="35%">ASSLT FAM/HOUSE MEM IMPED BRTH</td>
<td align="center">F3</td>
<td align="center" width="5%">238</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">CR57561I</td>
<td align="center" width="5%">12/18/21</td>
<td align="center" width="5%">$15,000.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">PENDING DISPOSITION</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
<tr class="evenRow">
<td align="center" width="35%">ASSAULT BODILY INJ FAMILY VIOL</td>
<td align="center">MA</td>
<td align="center" width="5%">JP4</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">M4210775</td>
<td align="center" width="5%">12/18/21</td>
<td align="center" width="5%">$500.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">DISMISSED</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
</table>
</td>
</tr>
<tr height="20">
<td> </td>
</tr>
<tr>
<td>
<table border="0">
<tr>
<td>Name: <b>AGUIRRE, MARIO FELIX JR</b></td>
</tr>
<tr>
<td>
                    Address: <b>710 S BIG SPRING ST,
                    MIDLAND,
                    TX 79701</b></td>
</tr>
<tr>
<td>Attorney: <b>T MAYO</b></td>
</tr>
</table>
</td>
</tr>
<tr align="right">
<td>
<table border="1" width="100%" cellpadding="0" style="border-collapse: collapse" bordercolor="#C0C0C0">
<thead align="center">
<tr>
<td><b>Offense</b></td>
<td><b>Class</b></td>
<td><b>Court</b></td>
<td><b>County</b></td>
<td><b>Warrant Number</b></td>
<td><b>Arrest Date</b></td>
<td><b>Bond</b></td>
<td><b>Fines</b></td>
<td><b>Disposition</b></td>
<td><b>Years</b></td>
<td><b>Months</b></td>
<td><b>Weeks</b></td>
<td><b>Days</b></td>
<td><b>Hours</b></td>
</tr>
</thead>
<tr>
<td align="center" width="35%">SEX ABUSE OF CHILD CONTINUOUS:VICTIM UNDER 14</td>
<td align="center">F1</td>
<td align="center" width="5%">385</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">CR57336I</td>
<td align="center" width="5%">02/12/22</td>
<td align="center" width="5%">$150,000.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">PENDING DISPOSITION</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
<tr class="evenRow">
<td align="center" width="35%">SALE/DIST/DISP HARMFUL MAT MIN</td>
<td align="center">MA</td>
<td align="center" width="5%">JP3</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">M2210676</td>
<td align="center" width="5%">02/12/22</td>
<td align="center" width="5%">$2,500.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">PENDING DISPOSITION</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
<tr>
<td align="center" width="35%">SALE/DIST/DISP HARMFUL MAT MIN</td>
<td align="center">MA</td>
<td align="center" width="5%">JP3</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">M2210675</td>
<td align="center" width="5%">02/12/22</td>
<td align="center" width="5%">$2,500.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">PENDING DISPOSITION</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
<tr class="evenRow">
<td align="center" width="35%">SALE/DIST/DISP HARMFUL MAT MIN</td>
<td align="center">MA</td>
<td align="center" width="5%">JP3</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">M2210674</td>
<td align="center" width="5%">02/12/22</td>
<td align="center" width="5%">$2,500.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">PENDING DISPOSITION</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
<tr>
<td align="center" width="35%">SALE/DIST/DISP HARMFUL MAT MIN</td>
<td align="center">MA</td>
<td align="center" width="5%">JP3</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">M2210673</td>
<td align="center" width="5%">02/12/22</td>
<td align="center" width="5%">$2,500.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">PENDING DISPOSITION</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
<tr class="evenRow">
<td align="center" width="35%">SALE/DIST/DISP HARMFUL MAT MIN</td>
<td align="center">MA</td>
<td align="center" width="5%">JP3</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">M2210672</td>
<td align="center" width="5%">02/12/22</td>
<td align="center" width="5%">$2,500.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">PENDING DISPOSITION</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
<tr>
<td align="center" width="35%">AGG ASSLT CAUSES SBI</td>
<td align="center">F2</td>
<td align="center" width="5%">385</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">CR57336II</td>
<td align="center" width="5%">02/15/22</td>
<td align="center" width="5%">$150,000.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">PENDING DISPOSITION</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
<tr class="evenRow">
<td align="center" width="35%">DRIVE WHILE INTOX BAC&gt;=0.15</td>
<td align="center">MA</td>
<td align="center" width="5%">CCL</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">CR170064</td>
<td align="center" width="5%">02/24/22</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">TIME SERVED ONLY</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">30</td>
<td align="center" width="5%">0</td>
</tr>
<tr>
<td align="center" width="35%">INDECENCY W/A CHILD EXPOSES</td>
<td align="center">F3</td>
<td align="center" width="5%">385</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">CR57336III</td>
<td align="center" width="5%">03/23/22</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">PENDING DISPOSITION</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
<tr class="evenRow">
<td align="center" width="35%">INDECENCY W/A CHILD EXPOSES</td>
<td align="center">F3</td>
<td align="center" width="5%">385</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">CR57336IV</td>
<td align="center" width="5%">03/23/22</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">PENDING DISPOSITION</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
<tr>
<td align="center" width="35%">INDECENCY W/A CHILD EXPOSES</td>
<td align="center">F3</td>
<td align="center" width="5%">385</td>
<td align="center" width="15%">MIDLAND</td>
<td align="center" width="5%">CR57336V</td>
<td align="center" width="5%">03/23/22</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="5%">$.00</td>
<td align="center" width="30%">PENDING DISPOSITION</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
<td align="center" width="5%">0</td>
</tr>
</table>
</td>
</tr>
<tr height="20">
<td> </td>
</tr>
</table>
</body>

Scott Babcock

unread,
May 11, 2022, 10:54:09 AM5/11/22
to Selenium Users
This web UI is terrible. Without IDs or element names, it will be very difficult to model this reliably. Is this really what you're dealing with? Truthfully, this may be easier to deal with using XML tools like XPath queries outside of Selenium.

That said... When dealing with structured interfaces with multiple instances of functionally identical components, it's preferrable to model the UI on a component level. By modeling the UI as a hierarchy of components, I think you'll get a lot better results than you will trying to deal with this as a single monolithic structure.

Your page has some components that only occur once, and others that are repeated. Identify the components and model each one separately. Then assemble all of the pieces.

I have a Selenium Java library that provides a framework for defining these sorts of models that you may find helpful: https://github.com/sbabcoc/Selenium-Foundation
The project provides examples of component and page models, and it includes extensive documentation.

Reply all
Reply to author
Forward
0 new messages