Nic*_*k L 5 python java jcomponent
我正在使用Marathon(Java桌面应用程序测试工具)来自动化回归测试.Marathon使用Jython,因此我可以使用Java库和Python库.当我的脚本填写某些字段时,会根据我在先前字段中输入的值显示(或不显示)各个字段.我需要跳过那些不存在的字段,原因很明显.当字段被禁用但仍然存在时,这很好,因为我可以使用
if Component.isEnabled():
#do something
else:
#do something
Run Code Online (Sandbox Code Playgroud)
问题是组件不存在时.在Java中,有没有办法测试组件的存在?例如,Component.exists()适合我的需要,但组件类中没有这样的方法.
我宁愿通过使用if Component.exists():语句来解决我的问题,但我能够使用try来解决它,除了块.但是,这会导致脚本的主要执行时间问题.它会在抛出异常之前尝试查找组件约2或3分钟.我能看到这个问题的唯一方法是,如果有类似的声明try for x seconds,如果找不到组件则继续.有没有办法限制你尝试任何给定声明的时间?
我发现一些代码可以在代码中引发超时异常,作为另一个 Stackoverflow 问题的答案:如果 socket.setdefaulttimeout() 不起作用,我该怎么办?,但是它仅适用于链接中所述的 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
Run Code Online (Sandbox Code Playgroud)
这将尝试“做某事”60 秒,如果执行超过 60 秒,则继续...
| 归档时间: |
|
| 查看次数: |
619 次 |
| 最近记录: |