1

私はたくさん検索しましたが、答えが得られませんでした...視覚的にC#で書かれたセレンWebドライバーテストにsikuli(dllまたは何か他のものを使用して、いくつかのコード)を含める(添付する、または何か他のもの)ことは可能ですかスタジオ 2010

4

5 に答える 5

5

私はこのように使用します:

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;
        }
    }
于 2012-11-14T14:00:52.567 に答える
1

Web サービスを介して Sikuli のコア機能を公開する Java アプリケーションの作成が完了しました。次に、この Java アプリケーションを呼び出す「クライアント」ライブラリを作成することで、ほぼ完全に統合された C# テスト内から Sikuli を正常に呼び出すことができました。

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

コマンドラインで実行するよりもはるかに高速です (これは私の以前のソリューションであり、通常はテストに約 30 秒余分に追加されました)。クライアント ライブラリはツールからの応答を自動的に解析するため、実行する必要はありません。結果に対する任意の文字列操作!

それが役立つことを願っています-Sikuliの正確なポートではないことは知っていますが、必要なものが得られることを願っています.

于 2014-06-18T18:45:03.443 に答える
1

コマンドラインからSikuliを使ってみましたか?

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();
于 2012-08-28T14:12:14.437 に答える
0
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);


        }
    }
}

これを試してみてください。うまくいくはずです。ps Jsonをインストールする必要があります-バージョン「6.0.5」、Java_HomeとSikuli_Homeを設定します

于 2015-06-30T08:11:16.860 に答える
0

だから...これは私が最初に見つけた方法です。

Blue Duck SDA を使用: http://sda.blueducktesting.com/index.php

そうすれば、Selenium から (AutoIT を介して) 何でも実行できます。

次に、Sikuli からの合格/不合格の出力が必要になります。このラッパーを使用してください: http://code.google.com/p/simplesikuli/wiki/UsageDetails

その simplesikuli ラッパーが使用する完全な Robot Framework を確認/使用する必要がある場合とない場合があります。 http://code.google.com/p/robotframework/

幸運を祈ります。

于 2012-08-28T14:49:45.027 に答える