检测元素并在标记<;画布>;硒
本文关键字: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,看看会发生什么。
它最近对我的一个项目起到了作用。