检测元素并在标记<;画布>;硒

本文关键字:lt gt 画布 元素 检测 | 更新日期: 2023-09-27 17:57:55

网站只有一个标签,它包含所有元素。

我想点击这个画布中的一个元素。

我尝试使用代码:

public void ClickCanvas(QA.IWebElement wbCanvas, int x, int y)
{
    try
    {
        QA.Interactions.Actions actionBuilder = new QA.Interactions.Actions(wd);
        Actions hoverClick = actionBuilder.MoveToElement(wbCanvas).MoveByOffset(x, y).ContextClick();
        hoverClick.Build().Perform();
    }
    catch { throw; }
}

我使用这个功能:

var width = int.Parse(browser.FindElementById("easCanvas").GetAttribute("width"));
var height = int.Parse(browser.FindElementById("easCanvas").GetAttribute("height"));
for (int i = 0; i < height; i += 5)
{
    for (int j = 0; j < width; j += 5)
    {
        browser.ClickCanvas(browser.FindElementById("easCanvas"), j,i);
    }
}

它只在浏览器的屏幕中央扫描。必须从屏幕的点(0,0)开始,而不是从屏幕的中心开始。

我不知道什么时候点击了一个元素。

已解决:

在硒文档中,

moveToElement(WebElement到element):将鼠标移动到元素的中间

moveToElement(WebElement到element,int xOffset,int yOffset):将鼠标移动到元素左上角的偏移位置。

我提出这个问题的原因是:

它只在浏览器的屏幕中心进行扫描

我需要在位置(0, 0)开始于元素的开头。

应更改为:

Actions hoverClick = actionBuilder.MoveToElement(wbCanvas, 0, 0).MoveByOffset(x, y).ContextClick();

我不知道一个元素是什么时候点击的。

在我的网站上,我测试当点击元素时,它会打开一个新的弹出窗口,这个弹出窗口包含<iframe>标签。

我需要添加代码:

while(browser.FindElementById("iframe_D") == null)
     Thread.Sleep(50);
if(browser.FindElementById("iframe_D") != null)
     browser.GoToFrame(browser.FindElementById("iframe_D"));

它对我有效。

检测元素并在标记<;画布>;硒

这可能很奇怪,但请尝试使用减号y,看看会发生什么。

它最近对我的一个项目起到了作用。