对于给定的tim量,尝试使用Python中的除外

2024-04-19 01:18:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Marathon(Java桌面应用程序测试工具)来自动化回归测试。Marathon使用Jython,所以我可以使用Java库和Python库。当我的脚本填写某些字段时,根据我在前面的字段中输入的值显示(或不显示)不同的字段。我需要跳过那些显然没有的领域。当字段被禁用,但仍然存在时,这很好,因为我可以使用

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

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

我希望通过使用if Component.exists():语句来解决我的问题,但是我可以使用try,except块来解决它。但是,这会导致脚本的主要执行时间问题。它会在引发异常之前尝试查找组件约2或3分钟。关于这个问题,我唯一能看到的方法是,是否存在类似try for x seconds之类的语句,如果找不到组件,则继续前进。有没有什么方法可以限制你尝试任何给定语句的时间?在


Tags: 方法脚本应用程序ifexists时间组件语句
0条回答
网友
1楼 · 发布于 2024-04-19 01:18:13

我发现一些代码可以在代码中抛出超时异常,作为对另一个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秒则继续。。。在

网友
2楼 · 发布于 2024-04-19 01:18:13

这是解决问题的方法:

import signal
def time_out(self):
    def signal_handler(signum, frame):
        raise Exception("Timed out!")

    signal.signal(signal.SIGALRM, signal_handler)
    signal.alarm(3)  
    all_games = []
    try:
        while True:
            #do what you want to do

    except Exception as msg:
        print msg

3是函数超时的时间

谨致问候,史洛米

相关问题 更多 >