Manipulação de popup em sistema web based

Olá!
Estou tendo dificuldade de manipular popups de “warning” e “accept” em um sistema web based, ouse seja, num sistema que acesso via navegador.

Ao pesquisar um registro ele pode (ou não) retornar um alerta de “registro não encontrado” em um popup. Mas este popup não é inspecionável. Aparentemente ele é do windows.

Usei este código:
try:
dialog_warning = bot.get_js_dialog(timeout=5) # Ajustar o tempo de espera conforme necessário
if dialog_warning:
dialog_warning_response = dialog_warning.text
print(dialog_warning_response)
dialog_warning.accept()
except Exception as e:
print(f"Erro ao lidar com pop-up: {e}")
pass

Algumas vezes ele trouxe o texto do popup e outras vezes dá erro de “elemento não possui a opção text”, ou seja, aparentemente ele não achou o popup.

Alguém já teve esse problema?
Saberiam me dizer como resolver?

Desde já agradeço!

Olá @ptfolchito,

Por acaso você já tentou utilizar o método handle_js_dialog do framework web? Basicamente ele já possui um tratamento interno para buscar o dialog e aceitar ou não baseado no que é passado por parâmetro. Aqui na documentação tem um exemplo: Alertas - Documentação BotCity

Outro detalhe é que o método get_js_dialog por padrão não possui esse parâmetro do timeout, um outro teste que pode tentar fazer é colocar um delay explícito antes de tentar buscar pelo alert, pode ser que o tempo entre o alerta aparecer na página e o método ser executado não esteja sendo suficiente. Nesse caso, poderia testar algo assim:

try:
  bot.wait(5000) # Espera explicitamente por 5 segundos
  dialog_warning = bot.get_js_dialog()

if dialog_warning:
  dialog_warning_response = dialog_warning.text
  print(dialog_warning_response)
  dialog_warning.accept()
except Exception as e:
  print(f"Erro ao lidar com pop-up: {e}")
  pass

Obrigada João!
Com suas dicas consegui resolver.
Abs

1 Like