سؤال

هل من الممكن لخلق السيلينيوم الاختبارات باستخدام فايرفوكس البرنامج المساعد التي تستخدم بشكل عشوائي القيم للمساعدة في القيام الانحدار الاختبارات ؟

القصة الكاملة: وأود أن تساعد العملاء هل اختبار القبول من خلال تزويدهم بمجموعة من الاختبارات التي تستخدم بعض الذكاء لخلق عشوائية (أو على الأقل شبه عشوائي) قيم قاعدة البيانات.واحدة من القضايا مع السيلينيوم IDE الاختبارات في هذه اللحظة هو أن لديهم القيم المعرفة مسبقا التي تجعل بعض أنواع من الاختبارات إشكالية.

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

المحلول

أول قبالة, السيلينيوم IDE محدود نوعا ما ، عليك أن تفكر في التحول إلى السيلينيوم RC, التي يمكن أن تكون مدفوعة من قبل جافا أو بيرل أو روبي أو بعض اللغات الأخرى.

فقط باستخدام السيلينيوم IDE, يمكنك تضمين جافا سكريبت تعبيرات اشتقاق معلمات الأوامر.يجب أن تكون قادرا على كتابة رقم عشوائي في حقل النص ، على سبيل المثال:

type fieldName javascript{Math.floor(Math.random()*11)}

تحديث: يمكنك تحديد وظائف المساعد في ملف يسمى "user-extensions.js".ترى السيلينيوم المرجعية.

نصائح أخرى

(على أساس تيلو الإجابة) يمكنك مزج الأحرف و الأرقام العشوائية مثل هذا:

javascript{"joe+" + Math.floor(Math.random()*11111) + "@gmail.com";}

جوجل يجعل من الممكن تلقائيا كل شيء أن استخدام الأسماء المستعارة ، على سبيل المثال ، joe+testing@gmail.com سوف تذهب إلى العنوان الخاص بك joe@gmail.com

ضرب *11111 أن أعطيك أكثر عشوائية القيم من 1 إلى 9 (في تيلو على سبيل المثال)

يمكنك إضافة مستخدم exentions.js للحصول على القيم العشوائية .

نسخ الشفرة ادناه ثم احفظ .شبيبة التمديد (randomgenerator.js) وإضافته إلى السيلينيوم الأساسية امتداد (SeleniumIDE-->خيارات--->علامة التبويب عام)

Selenium.prototype.doRandomString = function( options, varName ) {

    var length = 8;
    var type   = 'alphanumeric';
    var o = options.split( '|' );
    for ( var i = 0 ; i < 2 ; i ++ ) {
        if ( o[i] && o[i].match( /^\d+$/ ) )
            length = o[i];

        if ( o[i] && o[i].match( /^(?:alpha)?(?:numeric)?$/ ) )
            type = o[i];
    }

    switch( type ) {
        case 'alpha'        : storedVars[ varName ] = randomAlpha( length ); break;
        case 'numeric'      : storedVars[ varName ] = randomNumeric( length ); break;
        case 'alphanumeric' : storedVars[ varName ] = randomAlphaNumeric( length ); break;
        default             : storedVars[ varName ] = randomAlphaNumeric( length );
    };
};

function randomNumeric ( length ) {
    return generateRandomString( length, '0123456789'.split( '' ) );
}

function randomAlpha ( length ) {
    var alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split( '' );
    return generateRandomString( length, alpha );
}

function randomAlphaNumeric ( length ) {
    var alphanumeric = '01234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split( '' );
    return generateRandomString( length, alphanumeric );
}

function generateRandomString( length, chars ) {
    var string = '';
    for ( var i = 0 ; i < length ; i++ )
        string += chars[ Math.floor( Math.random() * chars.length ) ];
    return string;
}

طريقة استخدام

Command                Target     Value
-----------           ---------   ----------
randomString           6           x
type                username       ${x}

فوق رمز يولد 6 charactes سلسلة تعيين إلى متغير x

رمز في تنسيق HTML يشبه أدناه:

<tr>
    <td>randomString</td>
    <td>6</td>
    <td>x</td>
</tr>
<tr>
    <td>type</td>
    <td>username</td>
    <td>${x}</td>
</tr>

هنا سطر واحد حل توليد سلسلة عشوائية من الأحرف في JS:

"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("").filter(function(e, i, a) { return Math.random() > 0.8 }).join("")

مفيدة للصق في السيلينيوم IDE.

واحدة بطانة اختيار عشوائي من مجموعة صغيرة من البدائل:

javascript{['brie','cheddar','swiss'][Math.floor(Math.random()*3)]}
<tr>
<td>store</td>
 <td>javascript{Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 8)}</td>
<td>myRandomString</td>
</tr>

أنا جعلت قليلا يمبروفمنت إلى وظيفة generateRandomString.عندما FF حوادث, أنه من الجيد أن تكون قادرة على استخدام نفس رقم عشوائي مرة أخرى.

في الأساس, سوف يطلب منك إدخال سلسلة نفسك.إذا لم تقم بإدخال أي شيء, فإنه سيتم إنشاء فإنه.

function generateRandomString( length, chars ) { var string=prompt("Please today's random string",''); if (string == '') {for ( var i = 0 ; i < length ; i++ ) string += chars[ Math.floor( Math.random() * chars.length ) ]; return string;} else { return string;} }

في حين جعل الشعور RajendraChary آخر أعلاه, قضيت بعض الوقت في كتابة جديدة السيلينيوم IDE التمديد.

ملحق بلدي سوف تسمح للمستخدم ملء متغير مع نص لوريم إيبسوم.هناك عدد من الخيارات شكلي وتحول الأمر قليلا الأوامر.يمكنك أن تفعل أشياء مثل "5 كلمات|wordcaps|nomarks" لتوليد 5 أبجد هوز الكلمات ، كل رسملة دون علامات الترقيم.

لقد بدقة شرح التثبيت والاستخدام وكذلك قدمت كامل برنامج هنا

إذا كنت تأخذ نظرة خاطفة على رمز سوف تحصل على فكرة عن كيفية بناء وظائف مماثلة.

هنا اختلاف آخر على gmail على سبيل المثال:

<tr>
  <td>runScript</td>
  <td>emailRandom=document.getElementById('email');console.log(emailRandom.value);emailRandom.value=&quot;myEmail+&quot; + Math.floor(Math.random()*11111)+ &quot;@gmail.com&quot;;</td>
 <td></td>
</tr>

السيلينيوم RC يعطيك حرية أكثر بكثير من السيلينيوم IDE في أنه يمكنك من:

  • (1) أدخل أي قيمة حقل معين
  • (2) اختيار أي مجال اختبار في شكل HTML
  • (3) اختيار أي أمر التنفيذ/خطوة إلى اختبار مجموعة معينة من المجالات.

طلبت كيفية إدخال بعض قيمة عشوائية في مجال استخدام السيلينيوم IDE الآخرين قد أجبت لك كيفية إنشاء وإدخال القيم العشوائية في مجال استخدام السيلينيوم RC.أن يسقط في اختبار المرحلة (1):"إدخال أي قيمة إلى حقل معين".

استخدام السيلينيوم RC يمكنك بسهولة القيام المرحلة (2) و (3):اختبار أي مجال تحت أي خطوة إعدام عن طريق القيام ببعض البرمجة في لغة معتمدة مثل Java, PHP, CSharp, Ruby, Perl, Python.

وفيما يلي الخطوات اللازمة للقيام المرحلة (2) و (3):

  • إنشاء قائمة HTML المجالات بحيث يمكن بسهولة من خلال تكرار لهم
  • إنشاء متغير عشوائي للسيطرة على الخطوة ، ويقول RAND_STEP
  • إنشاء متغير عشوائي للسيطرة على الميدان ، يقول RAND_FIELD
  • [في نهاية المطاف إنشاء متغير عشوائي للسيطرة على القيمة التي تم إدخالها في حقل معين ، يقول RAND_VALUE, إذا كنت تريد أن تفعل المرحلة (1)]
  • الآن داخل جهاز التضبيب الخوارزمية ، تكرار أولا من خلال قيم RAND_STEP ، ثم مع كل هذا التكرار, تكرار خلال RAND_FIELD ، ثم أخيرا من خلال تكرار RAND_VALUE.

انظر جوابي أخرى عن التضبيب اختبار, السيلينيوم أبيض/اختبار الصندوق الأسود

الرياضيات.عشوائية قد تكون "جيدة بما فيه الكفاية" ولكن ، في الممارسة العملية ، عشوائية الدرجة هو الأفضل في كثير من الأحيان إلى الرياضيات.عشوائية().باستخدام الرياضيات.عشوائية الأرقام تحصل الواقع قد لا تكون عشوائية تماما.كتاب "فعالة جافا الإصدار الثاني" يغطي هذا البند #47.

أكثر من حل واحد ، لقد نسخها و لصقها في مئات من الاختبارات :

<tr>
    <td>store</td>
    <td>javascript{var myDate = new Date(); myDate.getFullYear()+&quot;-&quot;+(myDate.getMonth()+1)+&quot;-&quot;+myDate.getDate()+&quot;-&quot;+myDate.getHours()+myDate.getMinutes()+myDate.getSeconds()+myDate.getMilliseconds();}</td>
    <td>S_Unique</td>
</tr>
<tr>
    <td>store</td>
    <td>Selenium Test InternalRefID-${S_Unique}</td>
    <td>UniqueInternalRefID</td>
</tr>
<tr>
    <td>store</td>
    <td>Selenium Test Title-${S_Unique}</td>
    <td>UniqueTitle</td>
</tr>
<tr>
    <td>store</td>
    <td>SeleniumEmail-${G_Unique}@myURL.com</td>
    <td>UniqueEmailAddress</td>
</tr>

كل اختبار جناح يبدأ من خلال وضع سلسلة من المتغيرات (إذا كان هناك جناح كبير استخدام ملف منفصل مثل Set_Variables.html).تلك المتغيرات التي يمكن استخدامها في جميع أنحاء الجناح الخاص بك إلى الاختبار ، وحذف بيانات الاختبار.ومنذ المتغيرات استخدام التاريخ بدلا من رقم عشوائي, يمكنك تصحيح اختبار جناح من خلال البحث عن الكائنات التي تشترك في التاريخ.

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