代码之家  ›  专栏  ›  技术社区  ›  Alexandre

从包含winappdriver的void方法返回字符串

  •  0
  • Alexandre  · 技术社区  · 3 年前

    我正试图创建一个代码,其中包含一些字符串的循环以获得文本,并且我需要“返回”我在else-if(select==“t”)中获得的字符串。。。我该怎么做?? 代码的一部分

    public static void LoopId(WindowsDriver session, string[] element, int duration, string select)
    {
        int i = 0, count = 0; bool leave = false;
        if (duration == 0) { duration = 10; }
        do{ try{
                AppiumWebElement loop = session.FindElementByAccessibilityId(element[0]);
                foreach (var l in element) { if (count != 0) { loop = loop.FindElementByAccessibilityId(l); } count++; }
                leave = true;
                if ( select == "c") { AuxiliarMethods.LoopIdClick(loop, 0); }
                else if ( select == "t") { select = loop.Text; } // return select...
                else if (select == "dc") { loop.Click(); session.Mouse.DoubleClick(null); }
                else { AuxiliarMethods.LoopIdSendKeys(loop, select, 0); }
                    
        } catch { i++; } } while (i < duration && leave == false);
        if (i == duration) { select = "Error!!!";  Assert.Fail("Something went wrong, cant find the loop on code"); }
    }
    

    因此,解释这段代码是一个循环,有很多事情需要处理。尝试从外部应用程序(例如其他控制台应用程序)单击/双击/获取文本,我想调用这个方法,因为它是一个我花了很多时间来查找我想要的元素的方法,。。。所以我创建了一个void来做这件事,但它不会将“select”返回到我调用它的原始方法,(所以我使用了“AuxiliarMethod.LoopId(session,element[],0,select);”并且我想将select返回到我从中调用它的方法),这样我就可以将从LoopId方法获得的字符串用于其他事情,。。。例如执行'Assert.Pass(“成功传递的代码带有退出代码:\r\n”+select);'

    我试着用get/set创建一个对象,但效果很好,我试着只返回字符串,但我做不到,因为这是一个void方法,即使我需要更改大部分代码,我也希望得到一个解决方案:)

    0 回复  |  直到 3 年前
        1
  •  0
  •   Naeem A. Malik    3 年前

    定义全局静态属性。把你的价值放在方法的末尾。确保正确处理螺纹安全。