12

Ich habe einen Test getestet und festgestellt, dass der Winkelmesser das richtige Element findet, aber die Position (x und y) nicht mit der Position verknüpft ist die Schaltfläche, die gefunden wurde. Wenn ein Klick auf dieses Element aufgerufen wird, fehlt und klickt es an die falsche Stelle, wodurch der Test fehlschlägt.Winkelmesserprüfung (unter Verwendung von Selen und Chrom an der Winkelstelle) ergibt einen falschen x- und y-Punkt

Als eine Anmerkung scheinen diese Tests gut auf anderen Maschinen laufen mit dem einzigen Unterschied, dass das Betriebssystem die Tests fehlschlagen, ist Windows 10?

Wer weiß, wie Winkelmesser/Selen die Position des Elements bestimmt.

Vielen Dank im Voraus.

Jack Reeves

EDIT:

Nach Kommentar anfordernden einige Beispiele:

die Seite Objekt zu erhalten:

browser.get('examplePageAddress') 

die Header zu erhalten, die die Schaltfläche befindet:

var elem = element.all(by.className('header')).get(0) 

Um die div zu erhalten, dass die Schaltfläche in der Kopfzeile befindet:

var div = elem.element(by.name('examplename')) 

Um die tatsächliche Taste

var button = element(by.name('exampleButtonName')) 

Im eigentlichen Test eine einfache button.click get() aufgerufen wird, und das ist was fehlt der Knopf um ca. 50px.

Durch Debuggen und Schreiben in die Konsole habe ich bestätigt, dass das richtige Element ausgewählt ist [mit .getInnerHTML()] und durch die Messung der Position der Schaltfläche festgestellt, es ist etwa 50px anders [verwendet .getLocation(), um x zu bestimmen und y von Winkelmesser zurück]

+0

Können Sie ein reproduzierbares Beispiel erstellen? Bitte zeigen Sie auch, wie Sie den Standort bestimmen. Vielen Dank. – alecxe

+2

Hat das Element eine Animation oder irgendeine CSS, die ungewöhnlich erscheint? – Brine

+0

Sieht nicht so aus, wie ich sagte, es funktioniert, wenn dieser Test auf anderen Maschinen ausgeführt wird, was das seltsamste Ding ist! Die Schaltfläche selbst ist in einem eigenen div und der Ort der div, die falsch ist: S – JackFrost

Antwort

5

im eigentlichen Test eine einfache button.click() aufgerufen wird, und das ist, was die Schaltfläche fehlt von etwa 50px

In diesem Fall Umzug in dem Element zuerst und führen Sie dann einen Klick:

browser.actions().mouseMove(button).click().perform(); 

Oder scroll into view des Elements:

browser.executeScript("arguments[0].scrollIntoView();", button.getWebElement()); 
button.click(); 

Beachten Sie, dass getLocation() sich auf den sichtbaren Bereich hängt - Ansichtsfenster, die ein Browser bestimmt. Es kann in verschiedenen Browsern und verschiedenen Betriebssystemen unterschiedlich sein.Siehe auch:

Und Sie tatsächlich die viewport Größe erhalten und vergleichen Sie sie auf den Browsern und Systemen Sie Ihre Tests ausführen auf - ich bin ziemlich sicher, Sie unterschiedliche Werte erhalten werden siehe:

Sie auch in das, was 0 aussehenkehrt in Ihrem Fall:

Element.getBoundingClientRect() Die Methode gibt die Größe eines Elements und seine Position relativ zu dem Bildfenster.

browser.executeScript("return arguments[0].getBoundingClientRect();", button.getWebElement()).then(function (rect) { 
    console.log(rect.left); 
    console.log(rect.top); 
}); 
+0

Hey, war wirklich beschäftigt bei der Arbeit, hatte die Hoffnung, dies auszuprobieren, bevor Sie die Punkte vergeben, aber es automatisch abgelaufen, also schätze, Sie bekommen sie :) Vielen Dank für die Eingabe, die ich Sie wissen lassen, ob dies es löst! – JackFrost

Verwandte Themen