Я создаю набор тестов для веб-сайта (реализованный с использованием узлов и Angular), который собирает пользовательский ввод.Часть входных данных имеет вид текстового поля с возможностями редактирования (аналогично тому, которое используется при переполнении стека).Код, который создает редактируемое поле:
<div id="mceu_30" class="mce-edit-area mce-container mce-panel mce-stack-layout-item" hidefocus="1" tabindex="-1" role="group" style="border-width: 1px 0px 0px;">
<iframe id="ui-tinymce-9_ifr" frameborder="0" allowtransparency="true" title="Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help" style="width: 100%; height: 100px; display: block;"></iframe>
<html> <head><style>...</style></head> <body id="tinymce" class="mce-content-body " data-id="ui-tinymce-1" contenteditable="true" spellcheck="false"><p><br data-mce-bogus="1"></p></body> </html>
</div>
Для простоты я удалил весь раздел.
Я использую для тестирования фреймворк Geb / Spock.Конкретный фрагмент кода, который проверяет вышеуказанный элемент:
withFrame(OppBackgroundBox){$("body", id:"tinymce") << Background }
, где 'Background' - строка, определенная ранее в тестовом скрипте, а OppBackgroundBox - элемент страницы, определенный как
OppBackgroundBox{$(By.xpath('//iframe[@title="Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"]'),0)}
* 1011.* Я идентифицирую элемент по названию, потому что идентификатор фрейма меняется в браузере (//
[@ id = "ui-tinymce-9_ifr"] для Mozilla, но //
[@id = "ui-tinymce-1_ifr" для Chrome).
Все отлично работает при запуске теста в Chrome, однако при использовании Firefox (65.0.1 для Mac) я получаю следующееошибка
Условие не выполнено с исключением:
withFrame (OppBackgroundBox) {$ ("body", id: "tinymce") << Background} |||pages.app.OpportunitiesAdminCreatePage -> OppBackgroundBox: geb.navigator.NonEmptyNavigator
org.openqa.selenium.WebDriverException: [Exception ... "Компонент возвратил код ошибки: 0x80004005 (NS_ERRexText_Text_TR): "0x80004005 (NS_ERROR_FAILURE)" расположение: "JS frame :: chrome: //marionette/content/event.js :: getTIP_ :: line 429" data: no] Информация о сборке: версия: '3.141.59', редакция:'e82be7d358', время: '2018-11-14T08: 17: 03' Информация о системе: хост: 'Carless-MacBook-Pro.local', ip: 'fe80: 0: 0: 0: c3c: ed6e: 6d05: b45d% en0 ', os.name:' Mac OS X ', os.arch:' x86_64 ', os.version: '10 .14.3', java.version: '11 .0.1 'Информация о драйвере: org.openqa.selenium.firefox.FirefoxDriver Capabilities {acceptInsecureCerts: true, browserName: firefox, browserVersion: 65.0.1, javascriptEnabled: true, moz: accessibilityChecks: false, moz: geckodriverVersion: 0.24.0, moz: headless: false, moz: processID: 30057,: профиль: / var / folder / 10 / vbth59yn0v1 ..., moz: shutdownTimeout: 60000, moz: useNonSpecCompliantPointerOrigin: false, moz: webdriverClick: true, pageLoadStrategy: нормальный, платформа: MAC, имя_платформы: MAC, platformVersion: 18.2.0, вращаемый: ложный, setWindowRect: true, strictFileInteractability: false: implicit: time: 0, pageLoad: 300000, сценарий: 30000}, unhandledPromptBehavior: отклонить и уведомить} Идентификатор сеанса: 62b25df0-58cf-db4f-9d3c-12a1b12820ce
в CreateProgramProjectOpp.Publish OpportunityProject.: 195)
(где 195 относится к withFrame (OppBackgroundBox) {$ ("body", id: "tinymce") << Background} </em> строка кода)
Приведенное выше сообщение об ошибке немного искажено, но с OppBackgroundBox является сообщение
pages.app.OpportunitiesAdminCreatePage -> OppBackgroundBox: geb.navigator.NonEmptyNavigator
Так что проблема не в том, что WebDriver не может найти элемент.
Версия диРазличные компоненты появляются в сообщении об ошибке.Версия драйвера Gecko - 0.24.0
. В настоящий момент я не знаю, является ли это проблемой с WebDriver, Geb или какой-либо ошибкой конфигурации / управления версиями с моей стороны.
Кто-нибудь нашел этопроблема и обходной путь?Заранее спасибо за любую помощь.