为什么Selenium ExecuteScript方法不';在Salesforce应用程序中不再工作,但ExecuteAsyncScript可以工作

为什么Selenium ExecuteScript方法不';在Salesforce应用程序中不再工作,但ExecuteAsyncScript可以工作,selenium,selenium-webdriver,salesforce,selenium-chromedriver,salesforce-lightning,Selenium,Selenium Webdriver,Salesforce,Selenium Chromedriver,Salesforce Lightning,嗨,过去几天我一直在想这个问题。我在下面编写了代码,使用ExecuteScript方法可以工作,但不再工作。我唯一改变的是更新我的chrome驱动程序,因为它没有启动chrome,因为驱动程序没有使用我的chrome旧版本。因此,一旦我更新了chrome驱动程序,它就开始工作,直到我不得不运行这段代码。我在下面对它进行了修改,没有修改为实际的链接文本 IJavaScriptExecutor js = (IJavaScriptExecutor)WebActions.One;

嗨,过去几天我一直在想这个问题。我在下面编写了代码,使用ExecuteScript方法可以工作,但不再工作。我唯一改变的是更新我的chrome驱动程序,因为它没有启动chrome,因为驱动程序没有使用我的chrome旧版本。因此,一旦我更新了chrome驱动程序,它就开始工作,直到我不得不运行这段代码。我在下面对它进行了修改,没有修改为实际的链接文本

            IJavaScriptExecutor js = (IJavaScriptExecutor)WebActions.One;
            js.ExecuteScript("alert('Welcome to Guru99');"); // This was added for testing purpose
            IWebElement somelink = WebActions.One.FindElement(By.XPath("//span[text()='Some Text']"));
            js.ExecuteScript("arguments[0].click();", somelink );
当我将方法更改为ExecuteAsyncScript时,它又开始工作了。这是应用程序发生了变化还是我做错了。我试着阅读ExecuteAsyncScript与ExecuteScript的区别,但我所能得到的只是关于回拨的一些信息 当它完成时,我没有java脚本方面的经验


我只是想了解更多的东西,或者我应该开始使用ExecuteAsyncScript方法。谢谢

这里有一张关于这个问题的chromedriver罚单:

它说:

问题的原因是该网站修改了 内置异步函数对象。这会在以下情况下造成困难: ChromeDriver尝试创建一个AsyncFunction来包装正在运行的脚本 执行


chromedriver 78解决了这个问题。对于使用Chrome 77进行测试,票据建议切换到executeAsyncScript,或使用chromedriver 76,因为“chromedriver vX将使用Chrome vX+1运行”。

我认为异步版本只是创建了一个匿名函数,并接受回调的第二个参数。(对于成功/失败)调用标准ExecuteScript调用时,您会收到什么错误?您可能只是想象它再次工作。这两种方式都不起作用,因为警报将阻止单击。我看不到你的ExecuteAsyncScript是什么样子,所以我真的说不出来。@pcalkins当我使用标准ExecuteScript时,我似乎没有收到任何阻塞异常,脚本执行,似乎什么也没有发生。没有实际的标记和脚本,很难判断。。。你能贴出来吗?谢谢@randy我很高兴不是我。我以为我会失去它。与此同时,我想出了一个解决问题的办法。