Heim > Fragen und Antworten > Hauptteil
Ich möchte den Bildbestätigungscode lokal zwischenspeichern und dann dem Benutzer das Bild über den Webdienst anzeigen lassen und den Code manuell eingeben, um sich anzumelden.
Da der offizielle Betrieb schnittstellenlos ist, können Selenium-Screenshots nicht verwendet werden.
Gibt es neben dem Selenium-Screenshot und der Rechtsklick-Methode noch eine andere Möglichkeit?
Derzeit denke ich darüber nach, js zu verwenden, um den Bestätigungscode erneut in Canvas anzufordern und dann toDataURL in PNG-Base64-Code umzuwandeln und ihn an Dom auszugeben und ihn dann mit Selenium abzurufen.
Der folgende Codetest verwendet den Login-Zugangsbestätigungscode des mobilen Einkaufszentrums.
$('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'));
};
Wenn die URL, die den Bestätigungscode anfordert, von einer anderen Domäne als die Anmelde-URL stammt, wird ein domänenübergreifender Fehler gemeldet.
Sie müssen außerdem testen, ob das auf diese Weise erhaltene Verifizierungscode-Bild noch innerhalb des Gültigkeitszeitraums der aktuellen Sitzung vorhanden ist.
Wie kann das oben genannte domänenübergreifende Problem gelöst werden?
高洛峰2017-06-12 09:23:28
最后我采用的是js方式
var img=document.getElementById('IMGCODEID');
var d=document.createElement('CANVAS');
var cxt=d.getContext('2d');
d.width=img.width;d.height=img.height;
cxt.drawImage(img,0,0);
img.src=d.toDataURL('png');