Почему метод Selenium ExecuteScript больше не работает в приложении Salesforce, но ExecuteAsyncScript работает - PullRequest
0 голосов
/ 20 сентября 2019

Привет, я пытался понять это последние пару дней.Я написал код ниже, который используется для работы, но больше не работает, используя метод 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 vs ExecuteScript, чтобы увидеть разницу, но все, что я смог получить, это что-то о обратном вызове, сообщающем, когда он закончен, чего я не испытал в java-скрипте.

Я просто хотел бы понять больше, чем что-либо, или я должен просто начать использовать метод ExecuteAsyncScript.Спасибо

1 Ответ

1 голос
/ 25 сентября 2019

Здесь есть билет хром-драйвера по этой проблеме:

https://bugs.chromium.org/p/chromedriver/issues/detail?id=3103

В нем говорится:

Причиной проблемы является то, что этот сайт изменяет конструкторвстроенного объекта AsyncFunction.Это вызывает трудности, когда ChromeDriver пытается создать AsyncFunction для переноса выполняемого сценария.

chromedriver 78 устраняет проблему.Для тестирования с Chrome 77 заявка рекомендует переключиться на executeAsyncScript или использовать chromedriver 76, поскольку «ChromeDriver vX будет работать с Chrome vX + 1».

...