Ich habe gerade angefangen, ES6 zu lernen, und ich möchte die Seite mit dem Winkelmesser testen. Zuerst möchte ich eine Basis-Web-Element-Klasse erstellen und andere Elemente auf der Seite werden von der Basisklasse geerbt.Korrekter Ansatz zum Erstellen einer Instanz in ES6 (Objekte der Winkelmesserseite)
Protractor hat Selektoren, die Sie Elemente auswählen und arbeiten mit ihnen verwenden können, zum Beispiel klicken:
var button = element(by.css('.button'));
button.click();
Also im Grunde möchte ich, so etwas schaffen:
class BaseElement {
constructor(selector){
this._element = element(selector);
}
var button = new BaseElement(by.css('.button));
button.click();
Aus irgendeinem Grund es funktioniert nicht:
button.click();//button is an instance of base class BaseElement
es gibt zurück, dass Klick keine Funktion ist.
Ich kann einige Methoden "klicken" zur Klasse hinzufügen, oder "get" -Methode, wie im Beispiel unten, aber ich muss wissen, vielleicht habe ich einige grundlegende Prinzipien verpasst und es völlig falsch gemacht. In Protractor gibt es viele native, eingebaute Funktionen für Elemente und ich möchte keine Methoden für alle in der Basisklasse schreiben.
class BaseElement {
constructor(selector){
this._element = element(selector);
}
get element() {
return this._element;
}
}
var button = new BaseElement(by.css('.button));
button.element.click()//DON'T WANT TO USE THIS, LOOKING FOR USE of button.click() WITHOUT CREATING ANY METHODS IN CLASS IF POSSIBLE
Hat Ihre 'BaseElement'-Klasse überhaupt eigene Methoden? Ich meine, wofür brauchst du es? – Bergi
Wenn der Winkelmesser den ElementFinder als eine Klasse hätte ausgeben können, wäre es möglich gewesen (mit "erweitert"), aber da es nicht so geschrieben ist, glaube ich nicht, dass es eine andere Möglichkeit gibt, jede Methode neu zu definieren 'Basiselement'. – trincot
@Bergi Ich möchte Basisklasse in Feature verwenden, um alle untergeordneten Elemente mit etwas benutzerdefinierter Logik zu dekorieren, wenn ich Ihre Frage richtig verstanden habe – sk1llfull