2

C# WebDriver を使用して Web アプリケーションを自動化しています。すべてが既に Windows を対象として書かれています。しかし、今は Mac にも対応する必要があります。Selenium webdriver は、ChromeDriver.exe を使用して Chrome を起動します。この exe は、C# Process クラスを使用して Windows で起動できます。しかし、Mono で同じクラスを使用する Mac ではそうではありません。解決策は、Mono で ChromeDriver をビルドしているようです。github から ChromeDriver のソースを入手しました。しかし、同じものを構築するのは困難です。問題は、Mono で ChromeDriver.exe をビルドする方法です。私は Xamarin Studio を使用しています (これは、Mac 上の C# で開発するために使用している開発 IDE です)。したがって、私の目的は、Xamarin Studio で ChromeDriver ソースを読み込んでビルドすることです。しかし、ChromeDriver のソースをプルすると、*.vcxproj のように、プロジェクト ファイルのないいくつかの C ファイルが表示されます。このトピックを検索すると、Ninja を使用して構築できることがわかりました。私のためにそれを行うコマンド「ninja -C out\Release chromedriver」があります。そこで、github から Ninja のソースを取得しました。しかし、ビルド コマンドを実行しようとすると、out/Release File or Directory not exist というメッセージが表示されます。実際、Ninja を取得したフォルダー内には存在しません。私が持っている唯一の情報は、忍者ファイルを生成すると out フォルダーがそこにあるということです。しかし、私はそれを行う方法やその前提条件について完全に無知です。必要な理由に戻ります。セレン Web ドライバー コードでは、ChromeDriver は C# プロセス クラスを使用して起動されます。そこで、github から Ninja のソースを取得しました。しかし、ビルド コマンドを実行しようとすると、out/Release File or Directory not exist というメッセージが表示されます。実際、Ninja を取得したフォルダー内には存在しません。私が持っている唯一の情報は、忍者ファイルを生成すると out フォルダーがそこにあるということです。しかし、私はそれを行う方法やその前提条件について完全に無知です。必要な理由に戻ります。セレン Web ドライバー コードでは、ChromeDriver は C# プロセス クラスを使用して起動されます。そこで、github から Ninja のソースを取得しました。しかし、ビルド コマンドを実行しようとすると、out/Release File or Directory not exist というメッセージが表示されます。実際、Ninja を取得したフォルダー内には存在しません。私が持っている唯一の情報は、忍者ファイルを生成すると out フォルダーがそこにあるということです。しかし、私はそれを行う方法やその前提条件について完全に無知です。必要な理由に戻ります。セレン Web ドライバー コードでは、ChromeDriver は C# プロセス クラスを使用して起動されます。しかし、私はそれを行う方法やその前提条件について完全に無知です。必要な理由に戻ります。セレン Web ドライバー コードでは、ChromeDriver は C# プロセス クラスを使用して起動されます。しかし、私はそれを行う方法やその前提条件について完全に無知です。必要な理由に戻ります。セレン Web ドライバー コードでは、ChromeDriver は C# プロセス クラスを使用して起動されます。

Process p = new Process();
p.StartInfo.FileName = <Full Path of ChromeDriver.exe>;
p.UseShellExecute = false;
p.Start();

この C# コード スニペットは Windows では機能しますが、Mac では機能しません。Xamarin Studio を使用してデバッグします。そして、行 p.start() で表示されるエラーは、「オブジェクト p にプロセスが接続されていません」です。次に、Mac で Xamarin Studio を使用して C# で簡単なコンソール アプリケーションを作成します。つまり、出力 exe は Mono フレームワークでビルドされます。上記のコードでは、ChromeDriver の代わりにこの exe のパスを使用しています。p.Start() はエラーなしで正常に実行されます。

したがって、問題は ChromeDriver.exe の Mono バージョンを使用することに帰着します。chromedriverのサイトには、Windows用のChromeDriver.exe、Mac用のChromeDriver.dmgがありますが、Monoバージョンはありません。次の 3 つの解決策のいずれかを探しています。2. Mono を使用して ChromeDriver ソース ( https://github.com/scheib/chromium/tree/master/chrome/test/chromedriver ) をビルドするための手順。3. ビルドを完全にスキップして、Mac で ChromeDriver.exe を起動する別の方法を見つけます。

ここ数日間、これらすべてで頭を悩ませています:(。どんな助けも大歓迎です!さらに情報が必要な場合はお知らせください。助けてください..

前もってありがとう、デブ

4

1 に答える 1

0

1年間お休みしてごめんなさい!ご心配ありがとうございます。はい、やっとできました。Mac 版の chromedriver をhttp://chromedriver.storage.googleapis.com/index.htmlからダウンロードしました。そして、Xamarin Studio で記述した C# (mono) コードで単純に使用しました。そして、通常の「SeleniumDriver = new ChromeDriver(driverLibrary);」を使用して ChromeDriver を呼び出すことができました。声明。しかし、Automation フレームワーク全体を Mac で動作させるには、複数の場所で C# コードをさらに変更する必要がありました。細かいことは忘れたけど楽しかったのは覚えてる!人々は Webdriver+Mono が Mac でそれを行うのを見て興奮しました!

于 2015-04-03T18:15:10.720 に答える