3
votes

TypeError: Impossible d'exécuter 'evaluer' sur 'Document': le résultat n'est pas un ensemble de nœuds et ne peut donc pas être converti à l'aide de Xpath via Selenium

Partie de la source de la page:

InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression //span[@style="display:block; overflow:hidden; white-space: nowrap"]/text()="Gi2/0/20" because of the following error:

Parties du code:

from selenium import webdriver
...
driver = webdriver.Chrome()
...
IP_CLICK = browser.find_element_by_xpath('//span[@style="display:block; overflow:hidden; white-space: nowrap"]/text()="Gi2/0/20"').click()

J'essaie de sélectionner un élément dans ma page Web avec l'expression xpath , mais j'obtiens l'erreur suivante:

<span style="display:block; overflow:hidden; white-space: nowrap">Gi2/0/20</span>

TypeError: Impossible d'exécuter 'evaluer' sur 'Document': Le résultat n'est pas un ensemble de nœuds et ne peut donc pas être converti dans le type souhaité. (Infos de session: chrome = 72.0.3626.121) (Informations sur le pilote: chromedriver = 73.0.3683.20 (8e2b610813e167eee3619ac4ce6e42e3ec622017), plateforme = Windows NT 6.1.7601 SP1 x86_64)


1 commentaires

Prenez quelques minutes pour formater correctement votre question afin que le code HTML et le code soient formatés sous forme de code et que l'erreur soit formatée sous forme de citation. Cela rend la question BEAUCOUP plus facile à lire.


5 Réponses :


0
votes

Votre xpath doit être:

//span[@style="display:block; overflow:hidden; white-space: nowrap" and text()="Gi2/0/20"]

Il recherchera l'élément span correspondant aux @style et text () valeurs.


0 commentaires

2
votes

Vous utilisez l'expression xpath non valide, utilisez le xpath modifié ci-dessous:

xpath = "(//span[text()='Gi2/0/20'])[Matching index number goes here]";
IP_CLICK = browser.find_element_by_xpath(xpath);
IP_CLICK.click();

S'il y a plusieurs correspondances, utilisez l'indexation, je veux dire, passez le numéro d'index correspondant dans le xpath ci-dessous:

IP_CLICK = browser.find_element_by_xpath("//span[text()='Gi2/0/20']");
IP_CLICK.click();


0 commentaires

0
votes

Le problème est que vous ne pouvez pas utiliser un nœud de texte dans le sélénium pour localiser un élément par exemple. //span/text()

Vous devez trouver une alternative pour localiser l'élément quelque chose comme ceci

JavascriptExecutor js = (JavascriptExecutor)driver;
Object message = js.executeScript("var value = document.evaluate(\"//p[@class='artdeco-toast-message']/node()[not(self::button)]\",document, null, XPathResult.STRING_TYPE, null ); return value.stringValue;");
System.out.println(message.toString().trim());

OU

//span[text()='exact _text')]

Il existe une alternative pour localiser l'élément en utilisant du texte pas ie javascriptexecutor

Voici un exemple de code java

//span[contains(.,'matching_text')]

Reportez-vous ce lien pour en savoir plus


0 commentaires

1
votes

Ce message d'erreur ...

browser.find_element_by_xpath("//span[contains(., 'Gi2/0/20')]").click()

... implique que le résultat de l'exécution de l'expression xpath n'était pas un ensemble de nœuds.

Syntaxiquement, l'expression xpath que vous avez utilisée est une expression légitime xpath qui utilise le nœud text () comme dans parent_element/text()="Gi2/0/20" suivant xpath v3.0 .

Malheureusement, Selenium implémente xpath v1.0 qui ne prend pas en charge les nœuds text () .

De plus, click () ne renvoie rien, donc IP_CLICK n'est pas nécessaire.

Solution

Pour cliquer () sur l'élément, vous pouvez utiliser l'une des méthodes suivantes solutions:

  • Xpath 1 :

    browser.find_element_by_xpath("//span[text()='Gi2/0/20']").click()
    
  • Xpath 2 :

    TypeError: Failed to execute 'evaluate' on 'Document': The result is not a node set, and therefore cannot be converted to the desired type. 
     (Session info: chrome=72.0.3626.121) (Driver info: chromedriver=73.0.3683.20 (8e2b610813e167eee3619ac4ce6e42e3ec622017),platform=Windows NT 6.1.7601 SP1 x86_64)
    


0 commentaires

0
votes

Sélecteur non valide: impossible de localiser un élément avec l'expression XPath 6000039318 en raison de l'erreur suivante: TypeError: Échec de l'exécution de 'evaluer' sur 'Document': le résultat n'est pas un ensemble de nœuds et ne peut donc pas être converti dans le type souhaité. Répondre: J'ai trouvé cette erreur lorsque j'ai passé les données invalides à l'élément en utilisant la méthode sendKey () dans le sélénium. Comme je passe XPath d'un élément à la place de valeur (int, String) en utilisant la méthode sendKey. Cette confusion est faite en utilisant le même nom de propriété de data et Xpath dans le fichier de propriété.


0 commentaires