هل لدى السيلينيوم أو الوطن خاصية مثل إعداد QTP.WebPackage ("replaytype") = 2؟

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

سؤال

هناك بعض الأزرار والقوائم في التطبيق الذي أقوم باختباره الذي يتطلب النقرات الفعلية لإرسال جميع المعلومات من خلال النقر فوق النمط الأنفية لا يبدو أن تقطعه. يمكن لكل من TestPartner و QTP استخدام النقرات الفعلية. testpartner هل هذا دائما (بطيء) و QTP يفعل هذا عن طريق تغيير "إعادة التشغيل" إلى 2 من 1.

Setting.WebPackage("ReplayType") = 2

لذلك سؤالي هو. هل هناك على أي حال للحصول على نقرات حقيقية في Watin أو السيلينيوم؟ لم أتمكن من العثور على هذا الخيار.

شكرا لك يا جوش

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

المحلول

يمكن ل Selenium 2 إطلاق نقرات حقيقية بدلا من محاولة توليف النقرات وضغط المفاتيح مثل السيلينيوم 1. إنه يفعل الكثير من التفاعل مع نظام التشغيل للقيام بهذه الأشياء التي تأتي مع مشاكل السيلينيوم 1 التي تأتي الكثير من مشكلات السيلينيوم 1 هل تقوم بإطلاق نقرة أو ماوس أو Mousedown؟

السيلينيوم 2 في مرحلة ألفا الثانية ومستقرة للغاية في الوقت الحالي. يمكنك الحصول على السيلينيوم 2.0A2 من http://code.google.com/p/selenium/downloads/list..

لقد كنت أعمل على ربط .NET وأنا سعيد حقا بالطريقة التي يذهبون بها.

نصائح أخرى

متي ReplayType تم تعيين إلى جهاز (2)، يقوم QTP فعليا في تحريك الماوس وينفذ نقرة (يمكنك أن ترى نقل مؤشر الماوس). أنا لست على دراية بالسيلينيوم ولكن من ما أعرفه يتم إعادة التشغيل في جافا سكريبت نقية وبالتالي يمكنه إطفاء أحداث DOM (كما يفعل QTP في الحدث ReplayMode) لكنه لا يستطيع محاكاة حقيقة انقر على الطريقة التي يقوم بها QTP.

مع Watin، من الممكن الوصول إلى الواجهة "الأصلية" من العناصر في Windows. باستخدام ذلك يمكنك الحصول على إحداثيات الشاشة لأي عنصر.

using mshtml; //Add a reference to Microsoft.mshtml that comes with WatiN.
using WatiN.Core.Native.InternetExplorer;

public static System.Drawing.Point GetScreenPoint(IEElement element)
{
    IHTMLElement nativeElement = element.AsHtmlElement;
    IHTMLElement2 offsetElement = (IHTMLElement2)nativeElement;
    IHTMLRect clientRect = offsetElement.getBoundingClientRect();
    IHTMLDocument2 doc = (IHTMLDocument2)nativeElement.document;
    IHTMLWindow3 window = (IHTMLWindow3)doc.parentWindow;

    int windowLeft = window.screenLeft;
    int windowTop = window.screenTop;
    int elementLeft = clientRect.left;
    int elementTop = clientRect.top;
    int width = nativeElement.offsetWidth;
    int height = nativeElement.offsetHeight;

    int clickX = windowLeft + elementLeft + (width / 2);
    int clickY = windowTop + elementTop + (height / 2);

    return new System.Drawing.Point(clickX, clickY);
}

لتستخدمها:

Button myButton = browser.Button(Find.ById("myButton"));
System.Drawing.Point clickPoint = GetScreenPoint((IEElement)myButton.NativeElement);
MyClick(clickPoint);

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

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

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