Compte tenu de cet exemple html:

<div class="measure-tab"> --- i want to select this one
  <span class="color_title">someText</span>
</div>
<div class="measure-tab"> --- i dont want to select this one
  <span class="color_title">someText</span>
  <div>
      <span class="qwery">jokerText</span>
  </div>
</div>
<div class="measure-tab"> --- i want to select this one
  <span class="color_title">someText</span>
</div>

Je veux sélectionner le div qui a @ class = 'measure-tab' qui a en dessous un span qui en tant que classe spécifique et text = someText et un span imbriqué qui a une classe spécifique et ne contient pas text = 'jokerText', tout cela dans un XPATH

Ce que j'ai essayé, c'est:

//div[contains(@class, 'measure-tab') and //span[@class="color_title" and (contains(text(),'someText')) and //span[@class="color_title" and not(contains(text(),'jokerText'))]]

Mais cela ne semble pas fonctionner. J'ai également utilisé Ceci poster comme inspiration.

EDIT: Correction d'une mauvaise description de l'objectif de cette question

EDIT, a fait une nouvelle solution:

//div[contains(@class, 'measure-tab') and //span[contains(@class, 'color_title') and //span[not(contains(@class, 'qwery'))]]]

Mais cela renvoie tous les divs, au lieu de ne pas le faire correspondre avec --- je ne veux pas sélectionner celui-ci

<span class="color_title">someText</span>
  <div>
      <span class="qwery">jokerText</span>
  </div>

Je me sens si proche mais pourtant si loin, haha, ça n'a pas de sens pour moi pourquoi est-ce que ça correspond avec <span class="qwery">jokerText</span> quand j'ai écrit pas contient là

0
michael 26 août 2020 à 17:42

2 réponses

Meilleure réponse

Je crois que c'est ce que vous recherchez-

MyDivs = driver.find_elements_by_xpath("//div[@class='measure-tab' and not(descendant::*[text() = 'jokerText' and @class = 'qwery'])]")

Cela sélectionnera toutes les balises div qui ne contiennent pas jokerText.

0
Swaroop Humane 26 août 2020 à 15:36

Vous pouvez interroger avec not(following-sibling::div/span.....)

Essayez avec xpath suivant:

//span[@class='color_title' and not(following-sibling::div/span[@class='qwery' and text()='jokerText'])]/parent::div[@class='measure-tab']
0
frianH 26 août 2020 à 15:25