How to click on Menu Icon on a specific row in a Table

Hi guys i am facing this problem. I want to click on a specific row menu icon to open it and then perform the action on that specific column item. How can I do it if there are multiple rows in a table an i want to click on a specific row’s arrow on the most right to open its menu and click on Activate. I have attached the image and code below.

Create a web table of the list of menu items (you didn’t show us enough HTML to assist you there). Move through the rows of the web table to match the menu label to your expected text and then click on the column plus one.

I am really stuck at this. Here is full view of html if this can help you.

In terms of HTML, there is no such thing. If that sounds “specific” to you, please make it doubly specific for us.

Same again. That is not specific and in HTML terms is pretty vague – at worst, almost meaningless.

Sorry, no it isn’t.

I’m also concerned about the HTML I can see. It’s not often I see <th> and <td> appearing in the same <tr>. If that’s not a coding error, I’d like for someone to explain to me its purpose, semantically or otherwise.

Find the parent <table> element and dump it all here.

As for the dropdown menu thing, make sure you include the element which, when clicked, reveals the <ul> element.

Then we’ll be getting close to full HTML – or at least all relevant HTML.

In general, it’s easiest to locate a cell using row/column indices, then find items within the cell (such as the icon you’re trying to click on). As others have said, if you could provide more HTML in a screenshot, it would help. What we really need to see is all child elements of a sample row in the table (i.e. all elements below the <tr> for the row, expanded so we can see the structure).

That being said, here’s an xpath that may solve your problem:

//table//tbody//tr[1]//td[6]//a

In plain english:

1.) //table

Find the first table on the page. If you have multiple tables on the page, you may need to provide a predicate. We can’t see that in your screenshot, so I’m just going to assume there’s only 1 table present, or at least the table you want is the first one on the page…

2.) //tbody

Locate the body of the table. We do this because sometimes, depending on the table implementation, <tr> elements can exist in the header, and we want to filter those out.

3.) //tr[1]

Locate the first row of the table. You can replace the ‘1’ with another index to target another row, obviously.

4.) //td[6]

Locate the sixth column within the row. Again, replace the index with the appropriate one, but from what I can tell from your screenshot, the icon you are looking for is in the 6th column. At this point, we’ve now referenced the cell at [1, 6] in the table.

5.) //a

Locate the first “link” within the cell. I can’t see the actual icon you are referring to in your screenshot, but it appears that it’s implemented as a link (i.e. an <a> element). If it’s not an <a> element, my next best guess is that its an <i> element.

Try this out, but at the end of the day, we really need to see a sample of a full row, including your target icon. The second screenshot you provided is close, but we can’t see that icon.

1 Like

@salman.ahmad Did this solve your issue?