网站只有一个标签,它包含所有元素。
我想点击此画布中的元素。
我尝试使用代码:
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);
}
}
它仅在浏览器的屏幕中心进行扫描。必须从屏幕的Point(0,0)开始,而不是从屏幕中心开始。
我不知道何时点击了一个元素。
解决:
在selenium文件中,
moveToElement(WebElement toElement):将鼠标移动到元素的中间。
moveToElement(WebElement toElement,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"));
这对我有用。
答案 0 :(得分:1)
这可能很奇怪,但尝试使用减号数字,看看会发生什么。
最近我的一个项目对我有用。