Использование Watin для перемещения столбца сетки ExtJS - PullRequest
1 голос
/ 16 июня 2011

Как видно из названия, я пытался вызвать даже onmousedown, а затем событие onmmousemove в заголовке столбца, чтобы имитировать перетаскивание. Кажется, что «onmousedown» «щелкает» по предмету (он желтеет), но никакого движения не происходит.

Я использую концепцию отсюда http://www.codeproject.com/KB/aspnet/watinajaxtest.aspx

Любые идеи.

var columnHeaderToMove = browser.Div(Find.ById("listings")).TableCell(l => l.Text == "Title").ChildWithTag("div", null);

        var mouseDownEvent = new NameValueCollection();
        mouseDownEvent.Add("button", "1");
        mouseDownEvent.Add("clientX", "0");
        mouseDownEvent.Add("clientY", "0");
        columnHeaderToMove.FireEventNoWait("onmousedown", mouseDownEvent);
        Thread.Sleep(500);

        var columnHeaderToMoveTo = browser.Div(Find.ById("listings")).TableCell(l => l.Text == "Person");
        int Left = int.Parse(columnHeaderToMoveTo.GetAttributeValue("offsetLeft"))
        var eventProperties = new NameValueCollection();
        eventProperties.Add("button", "1");
        eventProperties.Add("clientX", Left.ToString());
        eventProperties.Add("clientY", "0");

Большое спасибо

1 Ответ

0 голосов
/ 28 июня 2011

Хорошо, после многих часов попыток, я решил это.Код здесь, чтобы помочь другим

var columnRowHeader = browser.Div(Find.ById(listingId)).Element(Find.ByClass("x-grid3-header-inner", false));
        var gridBody = browser.Div(Find.ById(listingId)).Element(Find.ByClass("x-panel-body", false));

        var gridPanel = browser.Div(Find.ById(listingId));
        var columnHeaderToMove = browser.Div(Find.ById(listingId)).TableCell(l => l.Text == "Title").ChildWithTag("div", null);

        int CurrentX = this.helper.FindPosition(columnHeaderToMove)[0];
        int CurrentY = this.helper.FindPosition(columnHeaderToMove)[1];

        var mouseDownEvent = new NameValueCollection();
        mouseDownEvent.Add("button", "1");
        mouseDownEvent.Add("clientX", "459");
        mouseDownEvent.Add("clientY", "115");
        columnHeaderToMove.FireEventNoWait("onmousedown", mouseDownEvent);
        Thread.Sleep(500);

        var columnHeaderToMoveTo = browser.Div(Find.ById(listingId)).TableCell(l => l.Text == "Person Responsible");
        //int newX = this.helper.FindPosition(columnHeaderToMoveTo)[0];
        //int newY = this.helper.FindPosition(columnHeaderToMoveTo)[1];
        int newX = 670;

        var eventProperties = new NameValueCollection();
        eventProperties.Add("button", "1");
        eventProperties.Add("clientX", newX.ToString());
        eventProperties.Add("clientY", "115");

        columnHeaderToMove.FireEventNoWait("onmousemove", eventProperties);
        Thread.Sleep(1000);

        //mouse up
        var mouseUpEvent = new NameValueCollection();
        mouseUpEvent.Add("button", "1");
        mouseUpEvent.Add("clientX", newX.ToString());
        mouseUpEvent.Add("clientY", "115");

        columnHeaderToMoveTo.FireEventNoWait("onmouseup", mouseUpEvent);
        columnHeaderToMove.FireEventNoWait("onmouseup", mouseUpEvent);

        Thread.Sleep(2000);

        int finalX = this.helper.FindPosition(columnHeaderToMove)[0];
        Assert.IsTrue(finalX != CurrentX, "Left was {0} is now {1} should be {2}.", CurrentX, finalX, newX);
...