Javascript Selenium Webdriver:在某些坐标上高亮显示元素
我正在使用SeleniumWebDriver自动化一个用HTML5构建的应用程序。现在我想突出显示我单击的点。突出显示元素不是什么大问题,但我需要知道它在什么坐标被单击。例如,我正在单击坐标200500处的画布元素 如果我实现java脚本来高亮显示元素,那么它将高亮显示整个画布元素,正如我希望高亮显示单击的Point200500一样。请提供您的答案。提前谢谢 我将specflow与C一起使用 在坐标处单击画布的代码:Javascript Selenium Webdriver:在某些坐标上高亮显示元素,javascript,selenium,automation,Javascript,Selenium,Automation,我正在使用SeleniumWebDriver自动化一个用HTML5构建的应用程序。现在我想突出显示我单击的点。突出显示元素不是什么大问题,但我需要知道它在什么坐标被单击。例如,我正在单击坐标200500处的画布元素 如果我实现java脚本来高亮显示元素,那么它将高亮显示整个画布元素,正如我希望高亮显示单击的Point200500一样。请提供您的答案。提前谢谢 我将specflow与C一起使用 在坐标处单击画布的代码: public void ClickCanvasElement(IWebDriv
public void ClickCanvasElement(IWebDriver driver, By locator, int offsetX, int offsetY)
{
try
{
IWebElement element = FindElement(driver, locator);
Actions actions = new Actions(driver);
for (int i = 0; i < 10; i++)
{
if ((element.Displayed == true && element.Enabled == true) || element == null)
{
actions.MoveToElement(element, offsetX, offsetY).Click().Perform();
break;
}
System.Threading.Thread.Sleep(500);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
您可以尝试以下代码:-您需要使用javascript突出显示特定元素
public void ClickCanvasElement(IWebDriver driver, By locator, int offsetX, int offsetY)
{
try
{
IWebElement element = FindElement(driver, locator);
Actions actions = new Actions(driver);
for (int i = 0; i < 10; i++)
{
if ((element.Displayed == true && element.Enabled == true) || element == null)
{
actions.MoveToElement(element, offsetX, offsetY).Click().Perform();
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("arguments[0].setAttribute('style', arguments[1]);"element","color: red; border: 3px solid red;");
break;
}
System.Threading.Thread.Sleep(500);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
我想到的唯一解决方案是编辑画布本身,例如,在context.fillRect中,使用x,y参数200500作为前两个参数绘制一个正方形/圆形。您可以尝试以下方法:
IWebElement element = FindElement(driver, locator);
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("var example = arguments[0]
var context = example.getContext('2d')
context.fillRect(200,500,10,10)",element);
但是,只有当您提供的坐标是画布坐标时,它才会起作用。如果不是,你需要走更复杂的道路,希望能有所帮助:
查找画布元素
提取已建立元素的绝对坐标
计算相对坐标
使用javascript从点1开始在画布上创建新形状
请提供一些代码,以便我们可以帮助您。我有一位同事正试图实现同样的目标,以便他能提供帮助。你的问题与标题冲突。一个状态高亮显示一个元素,另一个状态知道单击了什么坐标。请澄清这个问题。标题和描述都指向同一个东西,我只想通过突出显示来知道点击的坐标。