openQA.Selenium.WebDriverException: ‘неизвестная ошибка: аргументы [0]. щелчок не является функцией при попытке щелкнуть элемент svg с помощью ChromeDriver Selenium

#javascript #selenium #svg #electron #selenium-chromedriver

#javascript #selenium #svg #electron #selenium-chromedriver

Вопрос:

Я пытаюсь автоматизировать управление элементом изображения «svg», внутри которого есть 12 выбираемых частей (с тегом «path»).

Во всех моих приложениях electron-angular мне приходится использовать действия js с Selenium, чтобы нажимать на кнопки или другие элементы пользовательского интерфейса. Функция щелчка Selenium или класс действий не работают у меня в этом приложении.

Итак, когда я пытаюсь щелкнуть по одному из элементов «svg»:

  IWebElement patientIllustration = electron.driver.FindElement(By.Id("patientIllustration"));
 IWebElement shadow = (IWebElement)jse.ExecuteScript("return arguments[0].shadowRoot", patientIllustration);
 IWebElement body = shadow.FindElement(By.Id("adult_vascular"));
 IReadOnlyCollection<IWebElement> parts = body.FindElements(By.TagName("path"));
 IWebElement bodyPart = parts.ElementAt(0); 

 jse.ExecuteScript("arguments[0].scrollIntoView(true);", bodyPart);
 jse.ExecuteScript("arguments[0].click();", bodyPart);
  

Я получаю следующую ошибку:

openQA.Selenium.WebDriverException: ‘неизвестная ошибка: аргументы [0].щелчок не является функцией (информация о сеансе: оболочка содержимого =) (Информация о драйвере: chromedriver=2.36 (7361dbe5ac927be4276ec7da1d3548c4f22343a0), платформа = Windows NT 10.0.14393 x86_64)’

Я также пробовал нажимать на элемент BodyPart с помощью метода Click () и класса Actions. Но это ничего не делает. Эти две возможности не работают ни для одного элемента в моем приложении.

У кого-нибудь есть какая-нибудь другая идея попробовать?

Ответ №1:

Вместо этого

 jse.ExecuteScript("arguments[0].scrollIntoView()", bodyPart);
  

можете ли вы попробовать это.

 jse.ExecuteScript("arguments[0].scrollIntoView(true);", bodyPart);
  

Комментарии:

1. ОК. Извините за это, я изменил это, но исключение остается. Кроме того, я заметил, что у элемента BodyPart свойства «Отображается» и «Включено» имеют значение true.

Ответ №2:

Это сообщение об ошибке…

 OpenQA.Selenium.WebDriverException: 'unknown error: arguments[0].click is not a function 
 (Session info: content shell=) 
 (Driver info: chromedriver=2.36 
 (7361dbe5ac927be4276ec7da1d3548c4f22343a0),platform=Windows NT 10.0.14393 x86_64)
  

…подразумевает, что ChromeDriver не смог установить связь с веб-браузером, то есть с сеансом браузера Chrome.

Ваша основная проблема заключается в несовместимости между версиями двоичных файлов, которые вы используете следующим образом:

  • Вы используете chromedriver=2.36
  • В примечаниях к выпуску chromedriver= 2.36 четко упоминается следующее :

Поддерживает Chrome v63-65

  • Возможно, вы используете последнюю версию браузера Chrome, т.е. chrome = 73.0
  • В примечаниях к выпуску ChromeDriver версии 73.0.3683.68 четко упоминается следующее :

Поддерживает Chrome версии 73

Таким образом, существует явное несоответствие между ChromeDriver версии v2.36 и браузером Chrome версии 73.0


Решение

Комментарии:

1. Мое тестируемое приложение построено с использованием electron 2.0.3. Итак, я загружаю chromedriver с github.com/electron/electron/releases . Поэтому я не думаю, что есть несовместимости, потому что другие кнопки работают с действием щелчка js (действия Selenium бесполезны в моем приложении, тоже не знаю почему)… просто элемент svg parts (внутри теневого тега) вызывает исключение