Я работаю над огромным проектом автоматизации, и это моя ПОСЛЕДНЯЯ ПРОБЛЕМА, прежде чем я смогу завершить этот проект. Я использую Selenium для автоматизации изменений на сайте в стиле Drupal. До сих пор мне удавалось щелкать и взаимодействовать с каждым веб-элементом на сайте (особенно после того, как я перестал использовать драйвер chrome, который по какой-либо причине не может щелкать элементы, заключенные в теги <div>
?). Во всяком случае, я недавно обнаружил, что (при использовании Geckodriver FireFox, FYI) я не могу нажать на <textarea>
веб-элементы . При этом я получаю следующую ошибку:
Element <textarea id="edit-body-und-0-value" class="text-full wysiwyg form-textarea wysiwyg-processed" name="body[und][0][value]"> could not be scrolled into view
Вот мой соответствующий код и HTML:
Java
WebElement description = driver.findElement(By.id("edit-body-und-0-value"));
description.click();
description.clear();
description.sendKeys(desiredString);
HTML
<div class="field-type-text-with-summary field-name-body field-widget-text-textarea-with-summary form-wrapper" id="edit-body">
<div id="body-add-more-wrapper">
<div class="text-format-wrapper">
<div class="text-summary-wrapper"></div>
<div class="form-item form-type-textarea form-item-body-und-0-value">
<label for="edit-body-und-0-value">Description </label>
<div class="form-textarea-wrapper resizable"><textarea class="text-full wysiwyg form-textarea" id="edit-body-und-0-value" name="body[und][0][value]" cols="60" rows="20"><p>Specific projects are dependent on students&#39; interests, backgrounds, and classes completed.</p></textarea></div>
</div>
<fieldset class="filter-wrapper form-wrapper" id="edit-body-und-0-format">
<div class="fieldset-wrapper">
<div class="filter-help form-wrapper" id="edit-body-und-0-format-help">
<p><a href="/filter/tips" target="_blank">More information about text formats</a></p>
</div>
<div class="form-item form-type-select form-item-body-und-0-format">
<label for="edit-body-und-0-format--2">Text format </label>
<select class="filter-list form-select" id="edit-body-und-0-format--2" name="body[und][0][format]"><option value="filtered_html" selected="selected">Filtered HTML</option><option value="full_html">Full HTML</option><option value="plain_text">Plain text</option></select>
</div>
Я использовал много разных способов поиска веб-элемента и могу пообещать, что этот метод вызовет правильный элемент текстовой области. Я даже пытался нажать на элемент <div>
, но безрезультатно. Следующие методы также потерпели неудачу:
Использование библиотеки действий в Selenium примерно так:
Actions desc = new Actions(driver);
desc.moveToElement(description).click();
Action doIt = desc.build();
doIt.perform();
Сбой с: Exception in thread "AWT-EventQueue-0" org.openqa.selenium.WebDriverException: TypeError: rect is undefined
Использование Javascript Executor ничего не делает, кроме прокрутки к элементу. Нажатие только щелкает в верхнем правом углу экрана.
Использование WebDriverWait
объекта истекло, потому что элемент никогда не становится кликабельным во времени.
Я понятия не имею, что делает нажатие на этот элемент настолько сложным, но я думаю, что натолкнулся на подсказку сегодня. Я не специалист по тому, как работает JQuery (или JS в целом), но этот скрипт находится вверху страницы:
jQuery.extend(Drupal.settings, {"basePath":....
В довольно большом сценарии единственные идентификаторы элементов, которые являются элементами, прикрепляются к объекту, называемому «триггеры». Вот часть сценария:
"triggers": {
"edit-field-office-address-und-0-value": {
"field": "edit-field-office-address-und-0-value",
"resizable": 1,
"select": "edit-field-office-address-und-0-format--2",
"formatfiltered_html": {
"editor": "ckeditor",
"status": 1,
"toggle": 1
}
},
"edit-body-und-0-value": {
"field": "edit-body-und-0-value",
"resizable": 1,
"select": "edit-body-und-0-format--2",
"formatfiltered_html": {
"editor": "ckeditor",
"status": 1,
"toggle": 1
}
},
"edit-field-requirements-und-0-value": {
"field": "edit-field-requirements-und-0-value",
"resizable": 1,
"select": "edit-field-requirements-und-0-format--2",
"formatfiltered_html": {
"editor": "ckeditor",
"status": 1,
"toggle": 1
}
}
}
},
Я думаю, что Javascript каким-то образом портит опцию щелчка. Может быть, он создает параметры форматирования, из-за которых элемент кажется неприкосновенным?
Я понятия не имею, что делать, и срок приближается! Буду признателен за любую помощь в выяснении, как нажимать и взаимодействовать с этой текстовой областью!