Protractor ist ein von der Angular-Gruppe entwickeltes E2E-Test-Framework, das im Wesentlichen Webdriver verwendet.
Beim Testen von Canvas geht es hauptsächlich darum, Bilder zu vergleichen. Nach der Suche konnte ich keine gute NodeJS-Bibliothek finden, also habe ich immer noch die Likejs verwendet, die ich zuvor verwendet habe.
resemblejs verwendet Image und Canvas und kann daher nicht direkt in nodejs verwendet werden.
Jemand hat auf Github einen Node-ähnlichen Code erstellt, der jedoch einen in C geschriebenen Node-Canvas verwendet. Um dies zu kompilieren, müssen Sie die Laufzeitbibliothek von Python und VC installieren, was sehr mühsam klingt. Nur kein Wunder 2 Sterne.
Wäre es nicht in Ordnung, Similar direkt im Browser laufen zu lassen?
Hierfür ist die Verwendung der Methode „executeAsyncScript“ des Browsers erforderlich.
Lassen Sie uns zunächst über „executeAsyncScript“ sprechen.
Diese Methode dient dazu, den JS-Code in der Browserumgebung auszuführen, dh in der Browserumgebung auszuführen, und alle Dom-Dinge können verwendet werden , Canvas, alles ist ein Kinderspiel.
Und es ist asynchron. Tatsächlich gibt es ein synchrones Ausführungsskript mit ähnlicher Verwendung.
Ich werde die API nicht veröffentlichen, sondern nur über die Verwendung sprechen.
Die Methode „executeAsyncScript“ ist eine Methode mit variablen Parametern.
Der erste Parameter muss eine Methode sein, also der Code, der im Browser ausgeführt werden soll.
Zum Beispiel:
function(){ console.log("我是一个方法"); };
Dann können Sie später beliebig viele Parameter schreiben und in der ersten Parametermethode können Sie das Argumentarray verwenden um sie nacheinander zu erhalten Diese Parameter
, zum Beispiel:
function(){
console.log("我是一个方法,我有三个参数") var p1=arguments[0]; var p2=arguments[1]; var p3=arguments[2]; };
Da es asynchron ist, muss das Ausführungsergebnis mit einem Rückruf zurückgegeben werden Diese Callback-Funktion ist für den Webdriver bereit, sie ist der letzte Parameter der Argumente.
Das vollständige Erscheinungsbild des ersten Parameters sollte also
function(){ console.log("我是一个方法,我有三个参数") var p1=arguments[0]; var p2=arguments[1]; var p3=arguments[2]; var callback=arguments[arguments.lenght-1]; callback("返回"); };
Der Rückgabewert der MethodeexecuteAsyncScript ist ein Versprechen
so Die gesamte Funktion wird aufgerufen. Sie sollte so aussehen:
browser.executeAsyncScript("function(){console.log("前面写过了我就不写了")}",p1,p2,p3)
.then(function(result){ console.log("结果是"+result); });
Das Ergebnis des Rückrufs in der then-Methode.
Dasselbe sollte auch der Fall sein, wenn Sie keinen Winkelmesser und nur den Webdriver verwenden.
Okay, ich bin nach langem Schreiben noch nicht zum Punkt gekommen, also mache ich das jetzt einfach und schreibe im nächsten Artikel.
Das Obige ist der Inhalt der Verwendung eines Winkelmessers zum Testen des Leinwandzeichnens (1). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!