2016-07-10 1 views
1

Comment puis-je accéder à iframe avec un nom généré de manière aléatoire en utilisant le plugin nightmare-iframe?Nom iframe dynamique Nightmare-iframe

J'ai essayé

var name = yield nightmare 
    .goto(defaultUrl) 
    .click('.btn-login') 
    .wait('iframe') 
    .evaluate(function() { 
    return document.getElementsByTagName('iframe'); 
    }); 

yield nightmare.use(iframe.withFrameName(name, function(IFnightmare) { 
    IFnightmare 
    .type('input[name=username]', 'username') 
    .type('input[name=password]', 'password') 
    .click('button[type=submit]') 
})) 

mais ce code se termine par - TypeError: Impossible de lire la propriété 'switchToFrame' undefined

+0

Quelle version du cauchemar utilisez-vous? – Ross

+0

J'utilise la version 2.5.3 et nightmare-iframe 1.0.2 – yunicz

Répondre

2

nightmare-iframe est pas compatible avec Nightmare> 2.x - il attend de pouvoir appeler PhantomJS 'switchToFrame, qui n'existe pas dans Electron.

A partir de là, je pense que vous avez deux options:

  1. retombons Nightmare 1.8.x Il n'est plus supporté (au meilleur de ma connaissance), mais il fonctionne avec PhantomJS comme moteur de rendu.
  2. Utilisez une bibliothèque différente.This PR a été proposé comme correctif pour the long-standing iframe issue lorsque vous utilisez Electron comme moyen possible pour que Nightmare exécute des actions similaires à celles dont vous avez besoin. Je l'ai réécrit comme plugin, ce qui peut vous être utile. (Ce plugin est très dangereux. Utiliser avec précaution.)

Pour être complet, je tiens également à souligner que le soutien iframe natif has been proposed pour la prochaine révision majeure du cauchemar.