【问题标题】:Including sikuli to C# webdriver selenium包括 sikuli 到 C# webdriver selenium
【发布时间】:2012-08-19 13:10:08
【问题描述】:

我已经搜索了很多,但我没有得到答案...是否可以将(附加或其他)sikuli(使用 dll 或其他东西,一些代码)包含到编写的 selenium webdriver 测试中c# in Visual Studio 2010

【问题讨论】:

    标签: c# selenium webdriver automated-tests sikuli


    【解决方案1】:

    我是这样使用的:

    internal bool FillSingleRow()
        {
            return RunTest("Stryktipset_singleRow.sikuli");
        }
    
    public static bool RunTest(string sikuliTest)
        {
            var sikuliHome = Environment.GetEnvironmentVariable("SIKULI_HOME");
            var execDir = new DirectoryInfo(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
    
            for (var i = 0; i < 2; i++)
            {
                var tempDir = execDir.Parent;
                if (tempDir != null)
                {
                    execDir = tempDir;
                }
            }
    
            Sikuli.StartInfo.UseShellExecute = false;
            Sikuli.StartInfo.RedirectStandardError = true;
            Sikuli.StartInfo.RedirectStandardInput = true;
            Sikuli.StartInfo.RedirectStandardOutput = true;
            Sikuli.StartInfo.WorkingDirectory = sikuliHome;
            Sikuli.StartInfo.CreateNoWindow = true;
    
            Sikuli.StartInfo.Arguments = "-jar sikuli-script.jar -s " + '\u0022' + execDir.FullName + "\\Sikuli\\" + sikuliTest + '\u0022';
            Sikuli.StartInfo.FileName = "java.exe";
            Sikuli.Start();
    
            var so = Sikuli.StandardOutput;
            var se = Sikuli.StandardError;
            var error = se.ReadToEnd();
    
            if (error != string.Empty)
            {
                TestLog.Write(error);
                return false;
            }
            else
            {
                return true;
            }
        }
    

    【讨论】:

      【解决方案2】:

      您是否尝试过使用Sikuli from command line

      我不知道 Selenium 是否内置了对运行外部工具的支持,但在 C# 中使用 Process 对象来启动另一个程序并等待其结束非常容易。

      int exitCode;
      var processInfo = new ProcessStartInfo(@"c:\pathto\sikuli.exe", "-parameters for command line");
      processInfo.CreateNoWindow = true;
      processInfo.UseShellExecute = false;
      Process process = Process.Start(processInfo);
      process.WaitForExit();
      exitCode = process.ExitCode;
      process.Close();
      

      【讨论】:

        【解决方案3】:

        刚刚完成了一个通过 Web 服务公开 Sikuli 核心功能的 Java 应用程序。然后,通过编写一个调用这个 java 应用程序的“客户端”库,我能够从几乎完全集成的 C# 测试中成功调用 Sikuli。

        https://sourceforge.net/projects/sikuli4net/

        比通过命令行运行要快很多(这是我以前的解决方案,通常它会额外增加 30 秒的测试时间),并且客户端库会自动解析来自工具的响应,所以你不需要需要对结果进行任何字符串操作!

        希望它有所帮助 - 我知道它不是锡库里的确切港口,但希望它能满足您的需求,

        【讨论】:

          【解决方案4】:

          所以...这是我想出的第一种方法。

          使用蓝鸭 SDA: http://sda.blueducktesting.com/index.php

          这样您就可以从 Selenium 执行任何您想要的操作(通过 AutoIT)。

          接下来,您将需要 Sikuli 的通过/失败输出。使用这个包装器: http://code.google.com/p/simplesikuli/wiki/UsageDetails

          您可能需要也可能不需要查看/使用 simplesikuli 包装器使用的完整机器人框架。 http://code.google.com/p/robotframework/

          祝你好运。

          【讨论】:

            【解决方案5】:
            using System;
            using Microsoft.VisualStudio.TestTools.UnitTesting;
            using NUnit.Framework;
            using Sikuli4Net.sikuli_REST;
            using Sikuli4Net.sikuli_JSON;
            using Sikuli4Net.sikuli_UTIL;
            using System.Threading;
            using Newtonsoft.Json;
            
            namespace UnitTestProject3
            {
                [TestClass]
                public class UnitTest1
                {
                    APILauncher launcher = new APILauncher();
            
                    Pattern element1 = new Pattern(@"C:\myfolderforscreens\1.png");
                    [Test]
                    public void TestMethod1()
                    {
                        launcher.Start();
            
                        Thread.Sleep(8000);
                        Screen test = new Screen();
            
                        test.DoubleClick(element1);
            
            
                    }
                }
            }
            

            试试这个,应该可以的。 p.s.您需要安装 Json - 版本“6.0.5”,设置 Java_Home 和 Sikuli_Home

            【讨论】:

              猜你喜欢
              • 2013-10-10
              • 1970-01-01
              • 1970-01-01
              • 2018-10-03
              • 2017-11-30
              • 2014-10-06
              • 1970-01-01
              • 2023-03-14
              • 2014-03-02
              相关资源
              最近更新 更多