javascript错误:不允许的方法";元素frompoint“;使用Robot框架进行鼠标悬停时的ShadowRoot

javascript错误:不允许的方法";元素frompoint“;使用Robot框架进行鼠标悬停时的ShadowRoot,javascript,selenium,robotframework,shadow-dom,salesforce-lightning,Javascript,Selenium,Robotframework,Shadow Dom,Salesforce Lightning,我试图使用Robot Framework的关键字将鼠标悬停在某个元素上,但得到的错误为“javascript错误:ShadowRoot上不允许的方法”elementsFromPoint“。”。其他关键字(如Click Element)适用于同一个元素。但是当我尝试鼠标悬停时,它抛出了上面的错误。我不知道如何解决这个错误。 任何人都可以帮助我解决这个问题。由于SalesForce最近的一些更新和他们的工具提示,我也看到了这个问题。我建议用Try/Catch来包装操作,然后尝试下面的替代方法 我所做

我试图使用Robot Framework的关键字将鼠标悬停在某个元素上,但得到的错误为“javascript错误:ShadowRoot上不允许的方法”elementsFromPoint“。”。其他关键字(如Click Element)适用于同一个元素。但是当我尝试鼠标悬停时,它抛出了上面的错误。我不知道如何解决这个错误。
任何人都可以帮助我解决这个问题。

由于SalesForce最近的一些更新和他们的工具提示,我也看到了这个问题。我建议用Try/Catch来包装操作,然后尝试下面的替代方法

我所做的是获取元素的父元素(可能是一些描述性文本),单击父元素以获得焦点,然后使用sendkeys选项卡激活工具提示

由于这是用Try/Catch包装的,如果SalesForce选择回滚此更改,则无需进一步维护

顺便说一下,我尝试了一系列JavaScript解决方案参数[0] 参数[0]。fireEvent('onmouseover') 而我却找不到工作

此外,您可能会发现,正如我所说,在Linux上的无头Chrome浏览器上运行测试会使操作鼠标和单击操作变得无用

> Blockquote 

       try {
            actions.moveToElement(element, 5, 5).perform();
        } catch (Exception e) {

            //Alternate to activate an 'i' help hover 
            WebElement parent = element.findElement(By.xpath(".."));
            click(parent);
        }
    

根据解决方法是降级ChromeDriver。

对于ChromeDriver 90及更新版本,您可以使用
dispatchEvent()
如下所示

var javaScriptExecutor = (IJavaScriptExecutor)webDriver;
javaScriptExecutor.ExecuteScript("arguments[0].dispatchEvent(new MouseEvent('mouseover', {'bubbles': true }));", element);

我在点击Salesforce按钮时遇到了同样的问题。 迄今为止,基于nobyk解决方案的JavaScript解决方案仍然有效

JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
javascriptExecutor.executeScript("arguments[0].focus(); arguments[0].click()", element);

欢迎来到SO!请看一看,shadowRoot本身不是DOM元素。它是元素的容器。在实际DOM上执行
elementsFromPoint
Element@Danny“365CSI”Engelman我的应用程序是salesforce,问题是整个DOM中没有影子根DOM。但是错误是ShadowRoot。你知道javascript什么时候抛出这样的错误吗?不知道,我不知道Salesforce(LWC组件),我认为StackOverflow对它们有一个特定的标记;否则,请尝试Twitter并询问Salesforce Web组件大师在哪里。非常感谢您提供此解决方案。我试过和你说的一样的方法。我将焦点设置在父元素上,然后单击Tab键。成功了。我原以为这是Chrome的问题,但正如你所说,这是由于SalesForce最近的一些更新和他们的工具提示。谢谢Ankita。我去掉了标签,因为它在进一步的测试中并不总是有效,而且看起来是多余的。我也在研究如何使用activeElement,看看是否可以使用另一种Tab/Shift-Tab方法来弹出帮助文本。这是我20年前的第一次自动化工作。我真的可以用一些上箭头来弥补我微薄的声誉。:@达卡向导我又面临一个问题。我可以在调试模式下鼠标悬停,但运行时它不工作。我试着添加一些等待,并试着放慢速度。但它不起作用。我还使用javascript尝试鼠标悬停。这也不起作用。我将尝试探索更多。如果您遇到其他解决方案,请告诉我。@DarkArtsWizard很高兴听到您在自动化方面有如此丰富的经验。它也可以用于单击事件。(
bubbles
是我的案例所必需的。)
javaScriptExecutor.ExecuteScript(“参数[0].dispatchEvent(新建MouseeEvent('click',{'bubbles':true}));”,元素)