gpt4 book ai didi

java - 尝试 - 除了在 Python 中给定的时间

转载 作者:搜寻专家 更新时间:2023-11-01 00:56:43 24 4
gpt4 key购买 nike

我正在使用 Marathon(Java 桌面应用程序测试工具)来自动化回归测试。 Marathon 使用 Jython,因此我可以使用 Java 库和 Python 库。当我的脚本填写某些字段时,会根据我在先前字段中输入的值显示(或不显示)各种字段。由于显而易见的原因,我需要跳过不存在的字段。当字段被禁用但仍然存在时,这很好,因为我可以使用

    if Component.isEnabled():
#do something
else:
#do something

问题是当组件不存在时。在 Java 中有什么方法可以测试组件是否存在?例如,Component.exists() 可以满足我的需求,但组件类中没有这样的方法。

我更愿意使用 if Component.exists(): 语句来解决我的问题,但我可以使用 try, except block 来解决它。但是,这会导致脚本的主要执行时间问题。在抛出异常之前,它会尝试查找组件约 2 或 3 分钟。我能看到解决此问题的唯一方法是是否有某种声明,如 try for x seconds 并在找不到组件时继续。有什么方法可以限制您尝试任何给定语句的时间吗?

最佳答案

我发现一些代码可以在您的代码中抛出超时异常,作为对另一个 Stackoverflow 问题的回答:What should I do if socket.setdefaulttimeout() is not working? ,但是它仅适用于链接中所述的 linux 机器。

具体来说:

import signal, time

class Timeout():
"""Timeout class using ALARM signal"""
class Timeout(Exception): pass

def __init__(self, sec):
self.sec = sec

def __enter__(self):
signal.signal(signal.SIGALRM, self.raise_timeout)
signal.alarm(self.sec)

def __exit__(self, *args):
signal.alarm(0) # disable alarm

def raise_timeout(self, *args):
raise Timeout.Timeout()

# Run block of code with timeouts
try:
with Timeout(60):
#do something

except Timeout.Timeout:
#do something else

这将尝试“做某事”60 秒,如果执行超过 60 秒则继续...

关于java - 尝试 - 除了在 Python 中给定的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22537335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com