2

J'ai créé un projet en utilisant Nightwatch.js. Le processus effectue des contrôles dans notre environnement de développement (qui fonctionne très bien) et finira par envoyer un e-mail de test à un compte Gmail. Le processus va ensuite à Gmail, connectez-vous et cliquez sur le bon email.Impossible de localiser l'élément dans Gmail

Je tente d'obtenir l'URL qui a été envoyée à l'application (un lien de mot de passe oublié) et d'envoyer le navigateur à l'URL correcte.

Le problème est quand j'utilise le code suivant:

browser 
    .useXpath() 
    .getText("string(//*[text()[contains(text(),'RetrievePassword')]])",function(result) 
    { 
    console.log(result.log) 
    }) 

Je reçois cette erreur:

ERROR: Unable to locate element "" using: xpath

Mais quand je dis Nightwatch de cliquer sur le lien, il le fera sans problème . Une idée?

L'URL ressemble à ceci:

https://test.website.com/Secure/RetrievePassword.aspx?code=123456789

Répondre

2

Je pense que votre sélecteur XPath est erroné. Si vous utilisez //*[contains(text(),'RetrievePassword')] à la place, cela devrait fonctionner. Voici un exemple de base:

HTML (index.html)

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Nightwatch</title> 
</head> 
<body> 
    <a href="https://test.website.com/Secure/RetrievePassword.aspx?code=123456789">https://test.website.com/Secure/RetrievePassword.aspx?code=123456789</a> 
</body> 
</html> 

JavaScript (gmail.js)

module.exports = { 
    'Gmail': function (browser) { 
    browser 
     .url('http://localhost:8000/index.html') // Change this if needed 
     .waitForElementPresent('body', 1000) 
     .useXpath() 
     .getText("//*[contains(text(),'RetrievePassword')]", function (res) { 
     console.log(res.value); 
     }) 
     .end(); 
    } 
}; 

commande

nightwatch -t tests/gmail.js