السيلينيوم - تحقق مما إذا تم عرض صورة على الصفحة

StackOverflow https://stackoverflow.com/questions/4052304

سؤال

أقوم بإنشاء مجموعة من اختبارات السيلينيوم لتطبيق ألبوم ويب. أرغب في اختبار ما إذا كان يتم عرض الصورة فعليًا (تحتوي على بيانات صورة صالحة). هل هذا الشيء ممكن؟

هل كانت مفيدة؟

المحلول

واجهت هذا الموقف المماثل قبل حيث يكون SRC للصورة كما هو متوقع ولكن لا يتم عرض الصورة على الصفحة.

يمكنك التحقق مما إذا كانت الصورة يتم عرضها أم لا باستخدام JavaScriptexCecutor.

استخدم الكود التالي - تمرير Webelement (Image) -

 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);
    }

يمكنك التحقق مما إذا كانت الصورة قد تم تحميلها بالفعل على صفحة الويب عن طريق القيام بذلك.

نصائح أخرى

إذا كنت تستخدم Java ، فإن السيلينيوم لديه طريقة تدعى eval أو هكذا. أنت تعطيها سلسلة JavaScript وتمنحك النتيجة كسلسلة. على سبيل المثال ، يمكنك تجربة هذا (في سطر واحد):

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

يجب أن يعود هذا "صحيح" للحالة 200 أو "خطأ" لشيء آخر.

إذا كنت على استعداد لاستخدام خطة اختبار واجهة إلى السيلينيوم هناك بعض الخيارات. بمجرد حصولك على عنوان URL للصورة ، يمكنك الحصول على عنوان URL هذا وفحص الرؤوس التي تم إرجاعها. يمكنك أيضًا حفظ البيانات في ملف إذا كنت ترغب في فحصها يدويًا. أو يمكنك كتابة مدقق في Java لاتخاذ هذه البيانات والتحقق لمعرفة ما إذا كانت تدلل بالفعل.

إذا كنت على استعداد لتجربتها ، فسوف أكتب لك نموذجًا نصيًا. يمكنني حتى القيام بوظيفة مدقق الصورة السريعة إذا كنت ترغب في ذلك.

استخدم وظيفة الخطوط الواحدة:

Boolean isImageLoaded = (Boolean) ((JavascriptExecutor)driver).executeScript("return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0", imageWebElement);

أين:

imageWebElement = webelement لتحديد الصورة على الصفحة

isImageLoaded = ينتج عن منطقية (عودة صحيح إذا كانت الصورة موجودة ، خطأ إذا لم تكن كذلك)

يمكنك بالتأكيد التحقق من أن الصورة تظهر في مصدر الصفحة EG باستخدام معلمة XPath.

يمكنك أن تفترض أنه في مصدر الصفحة ، سيتم عرضه ولكن لا أعرف بأي طريقة للتحقق من ذلك بالفعل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top