Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Selenium Webdriver:在某些坐标上高亮显示元素_Javascript_Selenium_Automation - Fatal编程技术网

Javascript Selenium Webdriver:在某些坐标上高亮显示元素

Javascript Selenium Webdriver:在某些坐标上高亮显示元素,javascript,selenium,automation,Javascript,Selenium,Automation,我正在使用SeleniumWebDriver自动化一个用HTML5构建的应用程序。现在我想突出显示我单击的点。突出显示元素不是什么大问题,但我需要知道它在什么坐标被单击。例如,我正在单击坐标200500处的画布元素 如果我实现java脚本来高亮显示元素,那么它将高亮显示整个画布元素,正如我希望高亮显示单击的Point200500一样。请提供您的答案。提前谢谢 我将specflow与C一起使用 在坐标处单击画布的代码: public void ClickCanvasElement(IWebDriv

我正在使用SeleniumWebDriver自动化一个用HTML5构建的应用程序。现在我想突出显示我单击的点。突出显示元素不是什么大问题,但我需要知道它在什么坐标被单击。例如,我正在单击坐标200500处的画布元素

如果我实现java脚本来高亮显示元素,那么它将高亮显示整个画布元素,正如我希望高亮显示单击的Point200500一样。请提供您的答案。提前谢谢

我将specflow与C一起使用

在坐标处单击画布的代码:

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开始在画布上创建新形状
请提供一些代码,以便我们可以帮助您。我有一位同事正试图实现同样的目标,以便他能提供帮助。你的问题与标题冲突。一个状态高亮显示一个元素,另一个状态知道单击了什么坐标。请澄清这个问题。标题和描述都指向同一个东西,我只想通过突出显示来知道点击的坐标。