XPath to find elements that does not have an id or class
Asked Answered
F

4

111

How can I get all tr elements without id attribute?

<tr id="name">...</tr>
<tr>...</tr>
<tr>...</tr>

Thanks

Frederickfredericka answered 8/3, 2010 at 19:34 Comment(0)
A
185

Pretty straightforward:

//tr[not(@id) and not(@class)]

That will give you all tr elements lacking both id and class attributes. If you want all tr elements lacking one of the two, use or instead of and:

//tr[not(@id) or not(@class)]

When attributes and elements are used in this way, if the attribute or element has a value it is treated as if it's true. If it is missing it is treated as if it's false.

Abbey answered 8/3, 2010 at 19:36 Comment(0)
H
33

If you're looking for an element that has class a but doesn't have class b, you can do the following.

//*[contains(@class, 'a') and not(contains(@class, 'b'))]

Or if you want to be sure not to match partial.

//*[contains(concat(' ', normalize-space(@class), ' '), ' some-class ') and 
not(contains(concat(' ', normalize-space(@class), ' '), ' another-class '))]
Haldeman answered 10/9, 2015 at 10:24 Comment(0)
A
15

Can you try //tr[not(@id)]?

Adjourn answered 8/3, 2010 at 19:36 Comment(0)
M
0

We can use as follows also for other scenarios : where we have two element

<input type="text">

and

<input type="text" disabled="">

and we want to select second element Then we can go for:

//input[not(@disabled)]
Mehala answered 28/11, 2023 at 17:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.