Home > Blockchain >  How to create xpath that matches both conditions present in an element?
How to create xpath that matches both conditions present in an element?

Time:04-30

Description: I need to create an Xpath that matches both the condition present in the div class = 'item_inside'

Explanation: Imagine There are two item_inside classes present on my webpage. One class has Big Basket text present inside aria-label, and another class has small basket present in the aria-label tag.

//*[@class = 'item_inside']//*[@class = 'food_list']

If I write the above xpath in developer tools it shows me two results, All I want to do is to somehow add aria-label = 'BigBasket' in the Xpath so that it gives me a unique result.

<div >
 <div >

    <div >
        <div >
            <div  tabindex="0" aria-label="Big Basket">
            </div>
       </div>
    </div>
  </div>

  <ul _cid="123456" >
  </ul>
</div>

Here is my tried xpath:

//*[@class = 'item_inside']//*[@class = 'one_line']//*[@class = 'headline_title_content headline_title_2' and @aria-label = 'Big Basket']//*[@class = 'item_inside' and @class = 'food_list']

Things I've tried:

I tried to create an Xpath with and, or , contains but I think the format of xpath was not proper so I didn't got my output.

CodePudding user response:

I suppose you need this as a first filter:

//*[@class = 'item_inside'][*[@class = 'food_list']]

So now you have every element with @class=item_inside and who has a element with class=food_list

Next you want to filter on that inner div , so we just add another predicate

//*[@class = 'item_inside'][*[@class = 'food_list']][*[@class = 'one_line']//*[@class = 'headline_title_content headline_title_2' and @aria-label = 'Big Basket']]

So now you have selected every the //*[@class = 'item_inside'] with these conditions

  • Related