1

私がテストしているアプリケーションには、すべての情報を送信するために実際のクリックが必要なボタンとメニューがいくつかありますが、FireEventスタイルのクリックではそれがうまくいかないようです。TestPartnerとQTPはどちらも実際のクリックを使用できます。TestPartnerはこれを常に(低速で)実行し、QTPは「ReplayType」を1から2に変更することでこれを実行します。

Setting.WebPackage("ReplayType") = 2

だから私の質問はです。WatiNまたはSeleniumで実際のクリックを取得する方法はありますか?私はそのオプションを見つけることができませんでした。

ありがとう、ジョシュ

4

3 に答える 3

3

Selenium 2は、Selenium 1のようにクリックとキーストロークを合成しようとする代わりに、実際のクリックを発生させることができます。これらのことをネイティブに行うためにOSと多くの相互作用を行いますが、クリック、マウスアップ、マウスダウンのいずれかを起動するなど、Selenium1の問題の多くが発生します。

Selenium 2は2番目のアルファフェーズにあり、現時点では非常に安定しています。Selenium 2.0a2は、 http: //code.google.com/p/selenium/downloads/listから入手できます。

私は.NETバインディングに取り組んでおり、その方法に本当に満足しています。

于 2010-02-11T11:00:17.647 に答える
1

がデバイスReplayType(2)に設定されている場合、QTPは実際にマウスを動かしてクリックを実行します(マウスカーソルの動きを確認できます)。私はSeleniumにあまり詳しくありませんが、リプレイは純粋なJavaScriptで行われるため、DOMイベントを発生させることはできますが(QTPがイベントで行うように)、QTPのように実際のクリックをシミュレートすることはできません。ReplayMode

于 2010-02-11T07:30:30.337 に答える
1

WatiNを使用すると、IEウィンドウの要素の「ネイティブ」インターフェースにアクセスできます。これを使用すると、任意の要素の画面座標を取得できます。

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にその答えがあります。

于 2010-02-12T17:22:00.460 に答える