0


Selenium登录网页时,不定时出现异常弹窗的四种解决方案

方案一:加个异常判断,出现了就重新登录

以下是一个简单的伪代码示例,展示了如何加入异常判断并重新登录:

deflogin():# 登录操作if login_success:returnTrueelse:returnFalsedefcheck_usbkey_matching():# 检查当前用户与USBKEY是否匹配if usbkey_matching:returnTrueelse:returnFalse# 主程序defmain():whileTrue:if login():if check_usbkey_matching():# 执行其他操作breakelse:print("检测到当前用户与USBKEY不匹配,请重新验证")
                login()# 重新登录else:print("登录失败,请重新登录")

在上述示例中,使用了

login()

函数进行登录操作,并根据返回值判断登录是否成功。然后,使用

check_usbkey_matching()

函数检查当前用户与USBKEY是否匹配,并根据返回值判断是否需要重新登录。

如果检测到当前用户与USBKEY不匹配,就会输出相应的提示信息,并调用

login()

函数重新进行登录操作。这样可以在出现异常时重新登录,以确保操作的正确性。

方案二:加个进程随时监测一下

handle_exception

函数中添加以下代码来使用

subprocess

调用登录脚本:

import subprocess

defhandle_exception(exception):# 处理异常情况的逻辑代码,例如重新登录、重启程序等# 使用subprocess调用登录脚本或执行登录相关的命令
    subprocess.run(["python","login_script.py"])

在这个示例中,

subprocess.run()

函数用于执行

login_script.py

脚本文件。您可以根据实际需要调整参数,以符合您要调用的程序或执行的命令。

请注意,在使用

subprocess

调用其他程序或执行命令时,需要确保所调用的程序或命令存在并且可执行。同时,请注意在处理异常情况时,避免陷入无限循环或产生其他问题。

方案三:使用多进程随时监控

希望在后台随时监测USBKEY匹配情况并重新登录,可以使用多线程或多进程来实现。

以下是一个使用多线程的示例代码:

import threading

deflogin():# 登录操作if login_success:returnTrueelse:returnFalsedefcheck_usbkey_matching():whileTrue:# 检查当前用户与USBKEY是否匹配if usbkey_matching:breakelse:print("检测到当前用户与USBKEY不匹配,请重新验证")
            login()# 重新登录# 主程序defmain():
    login_thread = threading.Thread(target=check_usbkey_matching)
    login_thread.start()# 执行其他操作whileTrue:# 进行其他操作的代码

在上述示例中,我们创建了一个名为

login_thread

的线程,并将其设为后台线程。该线程通过调用

check_usbkey_matching()

函数来监测USBKEY匹配情况。如果检测到不匹配情况,就会输出相应的提示信息,并调用

login()

函数重新进行登录操作。

主程序中的其他操作可以在

while

循环中进行,这样即可同时进行USBKEY匹配监测和其他操作。

方案四:使用第三方库控制窗口操作

要实现监测异常弹窗并重新登录,您可以使用第三方库如

pywinauto

来自动化控制窗口操作。以下是一个使用多进程的示例代码:

import time
import multiprocessing
from pywinauto import Application

deflogin():# 登录操作if login_success:returnTrueelse:returnFalsedefmonitor_exceptions():whileTrue:try:# 使用pywinauto检测异常弹窗
            app = Application().connect(title_re="异常弹窗标题")
            dlg = app.top_window()# 如果检测到异常弹窗,则重新登录if dlg.exists():print("检测到异常弹窗,请重新登录")
                login()# 重新登录操作except Exception as e:# 出现异常时的处理逻辑print(f"出现异常: {e}")

        time.sleep(1)# 延时一定时间后再次检测# 主程序defmain():
    monitor_process = multiprocessing.Process(target=monitor_exceptions)
    monitor_process.start()# 执行其他操作whileTrue:# 进行其他操作的代码

在上述示例中,我们创建了一个名为

monitor_process

的进程,并将其启动。该进程通过使用

pywinauto

库来监测异常弹窗是否存在。如果检测到异常弹窗,则输出相应的提示信息,并调用

login()

函数重新进行登录操作。

主程序中的其他操作可以在

while

循环中进行,这样即可同时进行异常弹窗监测和其他操作。

标签: selenium python java

本文转载自: https://blog.csdn.net/m0_57021623/article/details/135438775
版权归原作者 今晚务必早点睡 所有, 如有侵权,请联系我们删除。

“Selenium登录网页时,不定时出现异常弹窗的四种解决方案”的评论:

还没有评论