【问题标题】:How To Draw On a HTML Canvas Image Using C# Selenium如何使用 C# Selenium 在 HTML 画布图像上绘图
【发布时间】:2017-03-15 15:03:13
【问题描述】:

我需要使用带有 Selenium WebDriver 的 C# 自动测试 HTML Canvas。当这个测试是手动完成时,它是通过按住鼠标单击并将光标移动到图像上来完成的。以下是我到目前为止尝试过的代码。这不会在图像上绘制。但是,在运行此测试并在图像处停止后,如果我手动将鼠标移到图像上而不单击,它会在 HTML 画布上绘制。

        IWebElement canvasContainer = WebDriver.FindElement(By.ClassName("canvas-container"));                   

        System.Drawing.Point Location = canvasContainer.Location;

        System.Drawing.Size Space = canvasContainer.Size;

        Actions builder = new Actions(WebDriver);            

        builder.ClickAndHold();

        IAction drawAction = builder.MoveToElement(canvasContainer,   

        Location.X, Location.Y) //start points x axis and y axis.

            .ClickAndHold()

            .MoveByOffset(Location.X, Location.Y)
            .ClickAndHold()
            .MoveByOffset(-Location.Y, -Location.Y)

            .ClickAndHold()
            .MoveByOffset(-Location.Y, -Location.Y)

            .ClickAndHold()
            .Build();
        drawAction.Perform();
        int move1 = Space.Width / 2;
        int move2 = Space.Height / 2;
        builder.MoveToElement(canvasContainer, move1, move2);

【问题讨论】:

  • 你能看看这个吗? stackoverflow.com/questions/40220377/…
  • 谢谢,我试了一下,但我的图像上仍然没有看到任何绘图。它通过单击并按住来手动工作,而不是通过单击移动单击。你知道一种修改方法来点击并按住吗?

标签: c# html selenium canvas drawing


【解决方案1】:

坐标可能在画布之外,因为您将画布的位置添加为偏移量。尝试相对于元素的偏移量:

var canvas = WebDriver.FindElement(By.ClassName("canvas-container"));                   
var size = canvas.Size;

new Actions(WebDriver)
  .MoveToElement(canvas, 2, 2)
  .ClickAndHold()
  .MoveByOffset(size.Width / 2, size.Height / 2)
  .Release()
  .Perform();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 2018-06-20
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多