2015-02-14 13 views
6

voglio di fare clic su una posizione specifica del mio elemento canvas, così ho scritto il seguente codice goniometro:Cliccando su determinate coordinate di elemento a goniometro

var canvas = element(by.id("canvas")); 

var clickCanvas = function(toRight, toBottom) { 
    browser.actions() 
    .mouseMove(canvas, -toRight, -toBottom) 
    .click(); 
} 

toRight/toBottom sono il numero di pixel in cui il clic dovrebbe essere fatto, relativo all'angolo in alto a sinistra della mia tela.

Tuttavia, il clic non sembra essere eseguito alle coordinate date. Ho ottenuto lo snippet da uno related question sullo strumento di verifica della qualità del software &.

Puoi confermare che questo frammento di lavoro funziona?
Potete suggerire alternative?

+0

Hai esaminato ['browser.executeScript()'] (http://angular.github.io/protractor/#/api?view=webdriver.WebDriver.prototype.executeScript)? – Aaron

+0

È necessario '.perform()' l'azione. – LeeGee

risposta

2

ti sei perso .Effettuare()

browser.actions().mouseMove(canvas, -toRight, -toBottom).click().perform();

Io uso un paio di volte nel mio test e confermare questo funziona

15

ho fatto questo lavoro, passando un oggetto che rappresenta la coordinata come il secondo argomento di mouseMove:

var canvas = element(by.id("canvas")); 

var clickCanvas = function (toRight, toBottom) { 
    browser.actions() 
     .mouseMove(canvas, {x: toRight, y: toBottom}) 
     .click() 
     .perform(); 
}; 
+0

È stata la parte oggetto che ha funzionato per me. Grazie! – jsuser

+0

Se pensi che la mia risposta abbia risolto il tuo problema, potresti accettarlo. :) – Olov

+0

Non ho fatto la domanda, mi dispiace, non posso accettarlo come risposta. – jsuser

1

In questo caso, si hanno perso il perform() chiamano:

browser.actions() 
    .mouseMove(canvas, -toRight, -toBottom) 
    .click(); // < no .perform() HERE 

Questo è uno degli errori più comuni quando si scrive test E2E in Goniometro/WebDriverJS.

Per evitare questi errori si ripetano, esiste un plugin eslint-plugin-protractor-ESLint che would warn you se perform() non è stato chiamato sul browser.actions() catena.

Problemi correlati