11

Ne yaparsam yap bilmiyorum Durağan durumdayken iletici testleri yapamıyorum. Aşağıdaki kod Ben Chrome ile görünüm içine alan kaydırma Sadece çalışırİletkenle durum değişikliklerini denetleme

  • Firefox
  • iyi çalışır .. işlevsel yarı olduğunu.
  • Phantom JS Başarısız

obj 
    .getCssValue('color') 
    .then(function (color1) { 
    browser 
     .actions() 
     .mouseMove(obj) 
     .perform() 
     .then(function() { 
     obj 
      .getCssValue('color') 
      .then(function (color2) { 
      expect(color1) 
       .not 
       .toEqual(color2); 
      }); 
     }); 

cevap

1

Çözüm 1:

Sadece nesne için basit bir vurgulu işlevi kullanmak

<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p onmouseover="colorin(this)" onmouseout="colorout(this)"> 
 
Testing colorin and colorout function for mouse hover 
 
</p> 
 

 

 
<script> 
 
function colorout(x) { 
 
    x.style.color = "#000000"; 
 
} 
 

 
function colorin(x) { 
 
    x.style.color = "#7FAF00"; 
 
} 
 
</script> 
 

 
</body> 
 
</html>

Olası Çözüm 2:

(waitForAngular ile bu sürümü deneyin); Eğer açısal beklemek gerekebilir:

obj 
    .getCssValue('color') 
    .then(function (color1) { 
    browser.waitForAngular(); 
    browser 
     .actions() 
     .mouseMove(obj) 
     .perform() 
     .then(function() { 
     obj 
      .getCssValue('color') 
      .then(function (color2) { 
      expect(color1) 
       .not 
       .toEqual(color2); 
      }); 
     }); 

Olası Çözüm 3:

.mouseMove(browser.findElement(protractor.B.id('foo'))) ile .mouseMove(obj) değiştirin ve kod Geçenlerde benzer bir şey karşılaştığınız

+0

Bu sayfa herhangi birini kullanamaz Angular –

+0

Tamam ... daha sonra sadece ilk çözümü kullanabilir veya '.mouseMove' yerine şu anki işlevinize' .onmouseover' ve '.onmouseout' kullanabilirsiniz. Bu sorun iletici için biliniyor gibi görünüyor https://github.com/angular/protractor/issues/159 – intika

+0

Doğru, ama bu JS herşeyi yapmak için gerekli gerektirir CSS yok, bir başlatıcı olmayan bir –

3

uyarlamak. bize yardımcı Ne

kullanarak belirli bir CSS değeri browser.wait() sahip olma element için bekleme oldu:

function waitForCssValue (elementFinder, cssProperty, cssValue) { 
    return function() { 
     return elementFinder.getCssValue(cssProperty).then(function (actualValue) { 
      return actualValue === cssValue; 
     }); 
    }; 
}; 

Kullanımı: Burada

browser.wait(waitForCssValue(obj, 'color', color2), 5000); 

, temelde 5 saniyeye kadar bekliyor Bir CSS color değerinin color2'a eşit olması için. Öğeyi taşıdıktan hemen sonra bekleme çağrısını uygulayın.


Ayrıca, görünüm içine kaydırma SO benzer sorunları çözmek için yardımcı olduğunu sahip hatırlıyorum: tarayıcı penceresi maksimize da yardımcı olabilir

browser.executeScript("arguments[0].scrollIntoView();", obj); 

, genellikle onPrepare() bunu yapmak:

onPrepare: function() { 
    browser.driver.manage().window().maximize(); 
}, 

Ek not yaklaşık PhantomJS: Herşeyden

Birincisi, iletki geliştiriciler PhantomJS ile protrator uçtan uca testler karşı tavsiye:

Not: Biz Açı ölçer ile testler için PhantomJS kullanmamanızı öneririz. PhantomJS'in, gerçek tarayıcılardan farklı olarak çökmesini ve davranmasını içeren çok sayıda sorun var.

Kenara

, bkz:

  • Using Protractor with PhantomJS
  • İşte

      Ben noktaya ulaşmaya çalışıyorum, sen argüman "Hayalet JS Başarısız" feda gerektiğini söyledi.

    +0

    denedim .executeScript', ama çalışmıyor; Bu konuda herhangi bir hile var mı? –

    +0

    @KirkStrobeck Denediğiniz için teşekkürler! Semptomlar nelerdir, öğenin tarayıcıya odaklandığını ve gezindiğini görüyor musunuz? Herhangi bir hata? "Bekle" yaklaşımını denediniz mi? – alecxe