Selenium Щелкнуть перехватывается UI-Widget-Overlay, несмотря на удаление наложения и модальногоJavascript

Форум по Javascript
Ответить
Anonymous
 Selenium Щелкнуть перехватывается UI-Widget-Overlay, несмотря на удаление наложения и модального

Сообщение Anonymous »

Я автоматизирую форму доставки с помощью селена и сталкиваюсь с проблемой, когда нажатие кнопки не удается из -за постоянного наложения. Приложение использует пользовательский интерфейс jQuery для модалей и наложений. < /P>
Ошибка, которую я получаю: < /p>

Код: Выделить всё

Message: element click intercepted: Element  is not clickable at point (...). Other element would receive the click:
< /code>
Несмотря на попытку удалить это наложение и диалог с использованием JavaScript, щелчок все еще заблокирован или не выполняет желаемое действие. Иногда это выглядит так, будто страница сбрасывается или браузер уходит. В других случаях я получаю ошибку JavaScript, такую ​​как: < /p>
javascript error: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions...
< /code>
или: < /p>
Message: element not interactable
< /code>
Вот что я попробовал: < /p>
# 1. Using Selenium's click directly
try:
driver.find_element(By.ID, 'ctl00_CPPC_ConfirmMessage_OSNR_btnOk').click()
except Exception as e:
print(f"❌ Failed: {e}")
Не удастся с элементом нажмите перехват .

Код: Выделить всё

# 2. Removing overlay and modal manually
try:
driver.execute_script("""
let overlay = document.querySelector('.ui-widget-overlay');
let dialog = document.querySelector('.ui-dialog');
if (overlay) overlay.remove();
if (dialog) dialog.remove();
""")
time.sleep(1)
except Exception as e:
print(f"❌ Overlay remove failed: {e}")
< /code>
все еще перехватывается. Иногда браузер закрывается мгновенно. < /P>
# 3. Clicking via JavaScript after removal
try:
driver.execute_script("""
const btn = document.getElementById('ctl00_CPPC_ConfirmMessage_OSNR_btnOk');
if (btn) btn.click();
""")
except Exception as e:
print(f"❌ JavaScript click failed: {e}")
Иногда эти броски не могут считывать свойства null (чтение 'click') .

Код: Выделить всё

# 4. Forcing the postback directly
try:
driver.execute_script("DoButtonPostBack('ctl00$CPPC$btnShip');")
except Exception as e:
print(f"❌ Postback failed: {e}")
< /code>
Это может перезагрузить или полностью закрыть страницу. < /p>
# 5. Disabling jQuery dialog itself
try:
driver.execute_script("""
if (window.jQuery) {
jQuery.fn.dialog = function() { return this; };
}
""")
except Exception as e:
print(f"❌ jQuery disable failed: {e}")
< /code>
Все еще нет эффекта. Оверлей блокирует действие.print("✅ Removed overlay")
print("✅ Clicked OK button")
< /code>
Но иногда он печатает их и до сих пор не делает ничего видимого или мгновенно увольняется. Я даже пробовал комбинации ожидания и взаимодействия. Пример: < /p>
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'ctl00_CPPC_ConfirmMessage_OSNR_btnOk'))).click()
Все еще не удалось.

Код: Выделить всё

Chrome: 136.0.7103.114
Selenium: 4.x
Python: 3.11+
chromedriver used
Что мне нужна помощь с :

надежный способ полностью удалить наложение и модальный диалог. /> предотвратить закрытие или сброс браузера после запуска сценария. < /p>
< /li>
< /ol>
Любая помощь будет оценена. Я исчерпал все разумные способы, которые я знаю. Если вы имели дело с постоянными наложениями или диалогами jquery, ваши предложения приветствуются! Я сделал все возможное, чтобы все ясно.


Подробнее здесь: https://stackoverflow.com/questions/796 ... ay-and-mod
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»