Je souhaite mettre en cache le code de vérification de l'image localement, puis laisser l'utilisateur voir l'image via le service Web et saisir manuellement le code pour se connecter.
Étant donné que l'opération officielle est sans interface, les captures d'écran de sélénium ne peuvent pas être utilisées.
En plus de la capture d'écran au sélénium et de la méthode du clic droit, existe-t-il un autre moyen ?
Actuellement, je pense utiliser js pour demander à nouveau le code de vérification dans Canvas, puis toDataURL dans le code png base64 et le transmettre à Dom, puis utiliser le sélénium pour l'obtenir.
Le test de code suivant utilise le code de vérification d'entrée de connexion du centre commercial mobile.
$('body').append('<canvas id="CAVASIMG"></canvas>');
var img=new Image();
img.src="http://shop.10086.cn/i/authImg";
var d=document.getElementById("CAVASIMG");
var cxt=d.getContext("2d");
img.onload = function(){
d.width = img.width;d.height = img.height;
cxt.drawImage(img,0,0);
console.log(d.toDataURL('png'));
};
Si l'URL demandant le code de vérification provient d'un domaine différent de l'URL de connexion, une erreur interdomaine sera signalée.
Vous devez également tester si l'image du code de vérification ainsi obtenue existe toujours pendant la période de validité de la session en cours.
Comment résoudre le problème inter-domaines ci-dessus ?
Vous devez d'abord capturer le paquet pour voir le chemin de requête de l'image, puis utiliser les requêtes pour télécharger l'image
La méthode ci-dessus est une méthode, vous pouvez également utiliser Selenium + PhantomJS
Le code de vérification de l'image et les cookies lors de la lecture de l'image sont intégrés
Assurez-vous simplement que le code de vérification auquel vous répondez est cohérent avec les cookies.
Au final j'ai utilisé la méthode js