【问题标题】:Unable to run script from Sikuli IDE无法从 Sikuli IDE 运行脚本
【发布时间】:2014-05-27 06:19:35
【问题描述】:

首先让我告诉你,我是 Sikuli 的新手。我已经使用 Sikuli IDE 开发了一些脚本,并且运行良好。

但是当我创建类并将测试作为方法添加到它时..它不起作用。有人可以让我知道我在这里缺少什么。我的 sikuli 脚本是这样的:

class Test:  
    def setUp(self):
        openApp("abc")
        wait(10)

    def tearDown(self):
       closeApp("abc")    

    def test1(self):
        click("1401168929740.png")
        time.sleep(1)
        type('o')
        time.sleep(3)
        click("1401169004890.png")
        wait("1401169047733.png")
        type("some text here")
        time.sleep(2)
        click("1401169154910.png")

        time.sleep(10)

        print("the outcome")

    def test2(self):
        wait("1401169193096.png")
        click("1401100914478.png")
        time.sleep(3)

        print("the outcome")


    def test3(self):
        type("m", KEY_ALT)
        type("cus1")
        type(Key.ENTER)
        time.sleep(2)
        type(Key.TAB)
        time.sleep(2)
        type("10.00")
        time.sleep(2)
        type(Key.TAB)
        time.sleep(2)
        type(Key.TAB)
        time.sleep(2)
        type(Key.ENTER)
        time.sleep(3)
        type(Key.ENTER)
        time.sleep(17)
        type(Key.ENTER)
        time.sleep(10)

    def test4(self):
        if exists("1401100952048.png"):
            popup("the outcome")

        else:
            popup("failure message")

【问题讨论】:

    标签: sikuli sikuli-ide


    【解决方案1】:

    我不是专家,但我不确定课程是否是你真正想要的......我怀疑你是否真的想要课程,因为它看起来不像你对考试的意义类具有不同的属性,只是将执行的不同代码段。

    如果您想将这些定义封装成一段易于调用的代码,您可以这样做--

    在定义了上面列出的所有函数之后,您可以再定义一个包含所有这些函数的函数:

    def setUp():
        openApp("abc")
        wait(10)
    
    def tearDown():
       closeApp("abc")    
    
    def test1():
        click("1401168929740.png")
        time.sleep(1)
        type('o')
        time.sleep(3)
        click("1401169004890.png")
        wait("1401169047733.png")
        type("some text here")
        time.sleep(2)
        click("1401169154910.png")
    
        time.sleep(10)
    
        print("the outcome")
    
    def test2():
        wait("1401169193096.png")
        click("1401100914478.png")
        time.sleep(3)
    
        print("the outcome")
    
    
    def test3():
        type("m", KEY_ALT)
        type("cus1")
        type(Key.ENTER)
        time.sleep(2)
        type(Key.TAB)
        time.sleep(2)
        type("10.00")
        time.sleep(2)
        type(Key.TAB)
        time.sleep(2)
        type(Key.TAB)
        time.sleep(2)
        type(Key.ENTER)
        time.sleep(3)
        type(Key.ENTER)
        time.sleep(17)
        type(Key.ENTER)
        time.sleep(10)
    
    def test4():
        if exists("1401100952048.png"):
            popup("the outcome")
    
        else:
            popup("failure message")
    
    def completeTest():
        setUp()
        tearDown()
        test1()
        test2()
        test3()
        test4()
    
    ###program begins here
    
    completeTest()
    

    如果你真的想要一个类,看看你是如何实现这个类的可以帮助我们找出问题所在。如果您想将这些方法保留在类中,那么我认为调用它们的正确方法是:

    Test.setUp()
    Test.tearDown()
    Test.test1()
    Test.test2()
    Test.test3()
    Test.test4()
    

    关于如何在pythonhere中构造类有很好的讨论(特别是第二个答案)。

    【讨论】:

      【解决方案2】:

      您需要调用该类以使其执行。
      您所做的定义也需要在执行之前被调用。
      如果您定义了一个名为__init__ 的定义,则该定义将在调用该类时执行。

      class Test():
          def __init__(self):
              self.setUp()
              self.tearDown()
      
          def setUp(self):
              print('Hello')
      
          def tearDown(self):
              print('World')
      
      # Run class 
      Test()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-01
        • 2016-07-16
        • 1970-01-01
        • 1970-01-01
        • 2011-02-08
        • 2021-12-29
        • 2021-07-09
        • 1970-01-01
        相关资源
        最近更新 更多