J'ai commencé à travailler avec CasperJS en écrivant quelques exemples de tests. Tout fonctionne bien lorsque vous utilisez des sélecteurs CSS, mais j'ai du mal à utiliser Xpath. La seule raison pour laquelle je veux utiliser XPath est de créer un localisateur plus résiliente, à savoirCasperJS waitUntilVisible par Xpath
'//a[text()="Office Building"]'
par rapport à la version css: #content > div > div > div > div:nth-child(1) > a
Voici ce que j'ai essayé (Note: Je l'ai testé ce XPath dans le navigateur console):
essayé passant directement
casper.waitUntilVisible('//a[text()="Office Building"]');
essayé spécifiant le localisateur explicitement comme Xpath:
casper.waitUntilVisible({
type: 'xpath',
path: '//a[text()="Office Building"]'
});
Et essayé nécessitant l'aide selectXPath
du module as documented here:
var x = require('casper').selectXPath;
casper.waitUntilVisible(x('//a[text()="Office Building"]'))';
Tous ces résultats dans une erreur de délai d'attente Wait timeout of 30000ms expired, exiting.
parce que l'élément est jamais « trouvé ». Des idées?
Qu'en est-il du "contient" la version: '// un [contient (., "Office Building") ] '? – alecxe
Une autre option serait casper.waitForText ('Office Building'). Le dernier exemple que vous avez écrit devrait fonctionner, mais mieux avec contient en cas d'espace. – dasmelch
@alecxe wow vous êtes partout :) malheureusement même résultat. Je peux essayer quelques méthodes différentes, comme utiliser 'evaluate' pour entrer dans le DOM, et y forcer certaines choses directement – Gunderson