web-dev-qa-db-fra.com

Comment déplacer la souris vers un point quelconque en utilisant Protractor/Selenium

Est-il possible de déplacer la souris vers des coordonnées arbitraires sur l'écran/par rapport à un élément dans les tests de Protractor? Je vois des gens qui recommandent d’utiliser Robot pour les utilisateurs de Java, mais bien sûr, je ne peux pas l’utiliser en JavaScript.

18
Andy

Je l'ai compris par moi-même ... j'ai juste pris des recherches en profondeur dans les documents Protractor et Selenium. Voici un exemple de code:

  it('should pan plots when you click and drag', function() {
    var plot0 = element(by.css('.plot > canvas'));
    browser.actions()
      .mouseMove(plot0, {x: 100, y: 100}) // 100px from left, 100 px from top of plot0
      .mouseDown()
      .mouseMove({x: 400, y: 0}) // 400px to the right of current location
      .perform();
  });
32
Andy

J'ai également trouvé une solution pour simuler une action de balayage.

var card = element(by.css('#card'));

browser.actions()
  .mouseMove(card, {x: 100, y: 100})
  .mouseDown()
  .mouseMove({x: 0, y: -400})
  .perform();

browser.sleep(500);

browser.actions()
  .mouseUp()
  .perform();
4
PurpleOrange
var graphDimensions = {// see [1]
  Width: 0,
  Height: 0
};
company_page.company_Chart_Graph().getAttribute('width')
  .then(function(width) {
    graphDimensions.Width = parseInt(width);
  });

company_page.company_Chart_Graph().getAttribute('height').then(function(height) {
  graphDimensions.Height = parseInt(height);

  console.log('W' + graphDimensions.Width);
  console.log('H' + graphDimensions.Height);

  var plot0 = company_page.company_Chart_Graph();
  browser.actions()
    .mouseMove(plot0, {
      x: 0,
      y: 0
    })
    .mouseDown()
    .mouseMove(plot0, {
      x: graphDimensions.Width,
      y: graphDimensions.Height
    })
    .mouseUp()
    .perform();

  browser.driver.sleep(23000);
  company_page.company_ReportDownload().click();
  browser.driver.sleep(23000);
});

[1]: http://testingalert.com/

0
kkashyap1707