2010-10-29 13 views

cevap

18

Bu benzer durumu, görüntünün src'sinin beklendiği gibi olduğundan, ancak görüntü sayfada görüntülenmediğinden dolayı karşılaştım.

Görüntünün görüntülenip görüntülenmediğini JavaScriptExcecutor kullanarak kontrol edebilirsiniz. WebElement (görüntü) geçirin - -

Object result = ((JavascriptExecutor) driver).executeScript(
    "return arguments[0].complete && "+ 
    "typeof arguments[0].naturalWidth != \"undefined\" && "+ 
    "arguments[0].naturalWidth > 0", image); 

    boolean loaded = false; 
    if (result instanceof Boolean) { 
     loaded = (Boolean) result; 
     System.out.println(loaded); 
    } 

görüntü aslında bunu yaparak web sayfasında yüklendiği yaptıysa doğrulayabilirsiniz

aşağıdaki kodu kullanın.

+1

Teşekkür ederim, bu aylar sonra herkesin çözüm bulmasını beklemiyordum. Tüm görüntülerin sayfada mevcut olduğunu kontrol etmek için bu kodu kullandım: 'var elems = document.getElementsByTagName (" img "); var allOk = true; (var i = 0; i 0; konsol. log (elems [i] .naturalWidth);} allOk; '. –

+0

Hoşgeldiniz. Sorunu çözdüğüne sevindim. –

+0

Harika iş! Bir not: Geliştiricilerin 400px'lik bir yer tutucu resmi vardır ve siz buna kaydırırken tembel yüklü görüntü ile değiştirirler. Yani son test benim için argümanlar [0] .naturalWidth! = 400'. Yardım için cihazlarınızı kontrol edin. – SiKing

0

Görüntünün sayfa kaynağında göründüğünü kesinlikle kontrol edebilirsiniz örn. XPath parametresi kullanılarak.

Bunu, sayfa kaynağında olduğu için görüntüleneceğini, ancak bunu doğrulamanın herhangi bir yolunu bilmediğimi varsayabilirsiniz.

+0

Galeri sayfası üretildiğinde durum iyi, ancak resmin kendisi geçersizdir - örneğin resim komut dosyasında istisna nedeniyle. –

1

TestPlan ön ucunu Selenium'da kullanmak için birkaç seçenek var. Resmin URL'sine sahip olduğunuzda, bu URL'yi alabilir ve iade edilen başlıkları inceleyebilirsiniz. manuel olarak incelemek isterseniz, verileri bir dosyaya da kaydedebilirsiniz. Ya da bu verileri almak için Java'da bir doğrulayıcı yazabilir ve gerçekten deşifre edip etmediğini kontrol edebilirsiniz.

Denemeye hazırsanız, size bir örnek komut dosyası yazacağım. İsterseniz hızlı bir görüntü doğrulama işlevi bile yapabilirim.

+0

Bu yazılım ilginç görünüyor, ancak Bromine fron-end kullanmak zorundayım. Şirketimiz, bazı kişisel çalışma saatlerini zaten özelleştirerek, görüntü testinin geçerli olmaması nedeniyle bu işi terk etti. İpucu için teşekkürler. –

2

Java kullanıyorsanız, selenyumun eval veya benzeri bir yöntemi vardır. Ona bir javascript dizesi verirsiniz ve size bir ip olarak sonuç verir. Örneğin, bu (bir çizgi) deneyebilirsiniz:

var req = new XMLHttpRequest(); 
req.open('get', document.getElementById('imageid').src, false); 
req.send(null); 
req.status==200 

Bu durum 200 veya başka bir şey için "yanlış" için "doğru" dönmelidir.

+0

Görüntünün kimliği yoksa ne yapmalı? Görüntünün adı ve sınıfı var - Bu durumda ne yapmalı? –