هل لدى السيلينيوم أو الوطن خاصية مثل إعداد QTP.WebPackage ("replaytype") = 2؟
-
19-09-2019 - |
سؤال
هناك بعض الأزرار والقوائم في التطبيق الذي أقوم باختباره الذي يتطلب النقرات الفعلية لإرسال جميع المعلومات من خلال النقر فوق النمط الأنفية لا يبدو أن تقطعه. يمكن لكل من 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.