Saya mahu cache kod pengesahan imej secara setempat, dan kemudian biarkan pengguna melihat imej melalui perkhidmatan web dan taip kod secara manual untuk log masuk.
Memandangkan operasi rasmi adalah tanpa antara muka, tangkapan skrin selenium tidak boleh digunakan.
Selain tangkapan skrin selenium dan kaedah klik kanan, adakah cara lain?
Pada masa ini saya berfikir untuk menggunakan js untuk meminta semula kod pengesahan ke dalam kanvas dan kemudian keDataURL ke dalam kod png base64 dan mengeluarkannya kepada Dom dan kemudian menggunakan selenium untuk mendapatkannya.
Ujian kod berikut menggunakan kod pengesahan pintu masuk log masuk pusat membeli-belah mudah alih.
$('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'));
};
Jika URL yang meminta kod pengesahan adalah daripada domain yang berbeza daripada URL log masuk, ralat merentas domain akan dilaporkan.
Anda juga perlu menguji sama ada imej kod pengesahan yang diperoleh dengan cara ini masih wujud dalam tempoh sah sesi semasa.
Bagaimana untuk menyelesaikan masalah merentas domain di atas?
Anda perlu menangkap paket terlebih dahulu untuk melihat laluan permintaan imej, dan kemudian gunakan permintaan untuk memuat turun imej
Cara di atas adalah kaedah, anda juga boleh menggunakan selenium + PhantomJS
Kod pengesahan gambar dan kuki semasa membaca gambar disepadukan
Hanya pastikan kod pengesahan yang anda jawab adalah konsisten dengan kuki.
Akhirnya saya menggunakan kaedah js