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

这篇具有很好参考价值的文章主要介绍了Selenium登录网页时,不定时出现异常弹窗的四种解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

def login():
    # 登录操作
    if login_success:
        return True
    else:
        return False

def check_usbkey_matching():
    # 检查当前用户与USBKEY是否匹配
    if usbkey_matching:
        return True
    else:
        return False

# 主程序
def main():
    while True:
        if login():
            if check_usbkey_matching():
                # 执行其他操作
                break
            else:
                print("检测到当前用户与USBKEY不匹配,请重新验证")
                login()  # 重新登录
        else:
            print("登录失败,请重新登录")

在上述示例中,使用了login()函数进行登录操作,并根据返回值判断登录是否成功。然后,使用check_usbkey_matching()函数检查当前用户与USBKEY是否匹配,并根据返回值判断是否需要重新登录。

如果检测到当前用户与USBKEY不匹配,就会输出相应的提示信息,并调用login()函数重新进行登录操作。这样可以在出现异常时重新登录,以确保操作的正确性。

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

handle_exception 函数中添加以下代码来使用 subprocess 调用登录脚本:

import subprocess

def handle_exception(exception):
    # 处理异常情况的逻辑代码,例如重新登录、重启程序等

    # 使用subprocess调用登录脚本或执行登录相关的命令
    subprocess.run(["python", "login_script.py"])

在这个示例中,subprocess.run() 函数用于执行 login_script.py 脚本文件。您可以根据实际需要调整参数,以符合您要调用的程序或执行的命令。

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

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

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

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

import threading

def login():
    # 登录操作
    if login_success:
        return True
    else:
        return False

def check_usbkey_matching():
    while True:
        # 检查当前用户与USBKEY是否匹配
        if usbkey_matching:
            break
        else:
            print("检测到当前用户与USBKEY不匹配,请重新验证")
            login()  # 重新登录

# 主程序
def main():
    login_thread = threading.Thread(target=check_usbkey_matching)
    login_thread.start()

    # 执行其他操作
    while True:
        # 进行其他操作的代码

在上述示例中,我们创建了一个名为login_thread的线程,并将其设为后台线程。该线程通过调用check_usbkey_matching()函数来监测USBKEY匹配情况。如果检测到不匹配情况,就会输出相应的提示信息,并调用login()函数重新进行登录操作。

主程序中的其他操作可以在while循环中进行,这样即可同时进行USBKEY匹配监测和其他操作。

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

要实现监测异常弹窗并重新登录,您可以使用第三方库如pywinauto来自动化控制窗口操作。以下是一个使用多进程的示例代码:

import time
import multiprocessing
from pywinauto import Application

def login():
    # 登录操作
    if login_success:
        return True
    else:
        return False

def monitor_exceptions():
    while True:
        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)  # 延时一定时间后再次检测

# 主程序
def main():
    monitor_process = multiprocessing.Process(target=monitor_exceptions)
    monitor_process.start()

    # 执行其他操作
    while True:
        # 进行其他操作的代码

在上述示例中,我们创建了一个名为monitor_process的进程,并将其启动。该进程通过使用pywinauto库来监测异常弹窗是否存在。如果检测到异常弹窗,则输出相应的提示信息,并调用login()函数重新进行登录操作。

主程序中的其他操作可以在while循环中进行,这样即可同时进行异常弹窗监测和其他操作。文章来源地址https://www.toymoban.com/news/detail-857522.html

到了这里,关于Selenium登录网页时,不定时出现异常弹窗的四种解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c++中MessageBox弹窗的用法大全

    想必大家都知道,MessageBox函数是c语言中很常用且好玩的函数之一,那你知道它怎么用吗? 这是MessageBox函数的标准格式之一,本人喜欢用这种格式,注意函数的 大小写 ! MessageBox不在 #includebits/stdc++.h 头文件里面,在 #includewindows.h 里面! 这是运行出来的结果: 其中,函数前

    2024年02月08日
    浏览(28)
  • 【Python自动化测试】:弹窗的处理

    有些页面弹出框,如果不处理,就无法做后续操作 【描述】:包含提示信息和【确认】按钮 【操作】:1、获取弹窗内容;2、进行“确认”操作 【语法实现】 1、获取弹窗内容: driver.switch_to.alert.text 2、进行确认操作: driver.switch_to.alert.accept() 【代码实现】 【描述】:包含

    2024年02月14日
    浏览(27)
  • 【uniapp】 实现公共弹窗的封装以及调用

    图例:红框区域为 “ 内容区域 ”      希望我的愚见能够帮助你哦~,若有不足之处,还望指出,你们有更好的解决方法,欢迎大家在评论区下方留言支持,大家一起相互学习参考呀~

    2024年02月10日
    浏览(32)
  • UE4两种点击空间UI弹窗的方式

    1、要实现点击,必须要给鼠标左键或者右键写发射射线的程序,如下   2、在关卡蓝图中,最好设置一下鼠标可见。  2、UI加一个按钮,并设计On Clicked事件 对应的响应如下,这是第一种 3、第二种如下    

    2024年02月14日
    浏览(81)
  • 解决websocket不定时出现1005错误

    后台抛出异常如下: 分析原因是: spring cloud gateway 转发websocket请求无法监听到 close 事件 没有收到预期的状态码 解决方案: 在gateway进行请求拦截 代码如下:

    2024年02月10日
    浏览(43)
  • 当element ui el-dialog弹窗有缓存,每次打开弹窗的时候会出问题的解决方法

    解决方法: 如下是解决方案。用el-dialog 里面有一个 destroy-on-close (关闭时销毁 Dialog 中的元素)这个完全没用。其实很简单。只需要在 el-dialog 外层加一层div 然后在 div 上写上 v-if=\\\"dialogVisible\\\"就行了。 理解: 也就是说,当显示参数 dialogVisible = true 时,先创建 el-dialog 组件,

    2024年02月04日
    浏览(36)
  • 微信小程序使用editor富文本编辑器 以及回显 全屏弹窗的模式

      以上是富文本的值返回接收的地方 下面是富文本的html 记录一下使用方法 也可以参考一下怎么使用

    2024年02月12日
    浏览(44)
  • selenium设置需要登录网页的cookie

    在 Selenium 中,可以使用 add_cookie() 方法向浏览器添加 Cookie,模拟登录状态。下面是一个示例代码,演示如何使用 Selenium 设置登录后的网页 Cookie: 上述代码首先创建了一个 Chrome 浏览器对象,并访问了登录页面。然后通过 find_element_by_name() 方法找到了用户名、密码输入框和提

    2024年02月11日
    浏览(31)
  • python使用selenium模拟登录网页页面

    python的selenium用于自动化测试,但是在自动化测试的时候也可以用来模拟登录,本次用selenium模拟登录某DN网页 代码如下(示例): 本次使用的是谷歌的内核若有需要,也可以换其他浏览器的内核 首先打开CSDN页面准备在页面中定位元素 为方便操作,直接在开发者界面中复制

    2024年02月13日
    浏览(27)
  • TIA博途安装后,电脑每次开机都会弹出通信设置弹窗的解决办法

    大家在安装完博途之后,电脑每次开机的时候都会弹出这样一个弹窗,如下图所示,让我们选择网络适配器,这里可以直接点击右上角关闭,对博途软件的使用没有影响, 那么,如果不想每次电脑开机都看见这个弹窗,有没有办法可以设置呢? 答案是有的 。 具体操作步骤可

    2024年02月10日
    浏览(159)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包