2

我正在使用 C# WebDriver 来自动化 Web 应用程序。一切都是针对 Windows 编写的。但现在也需要为 Mac 做好准备。Selenium webdriver 使用 ChromeDriver.exe 启动 Chrome。这个 exe 可以在 Windows 中使用 C# Process 类启动;但不是在 Mac 中使用 Mono 中的相同类。解决方案似乎是在 Mono 中构建 ChromeDriver。我从 github 获得了 ChromeDriver 源代码。但是很难建立相同的。问题陈述是:如何用 Mono 构建 ChromeDriver.exe。我正在使用 Xamarin Studio(这是我在 Mac 上使用 C# 开发的开发 IDE)。所以我的目标是在 Xamarin Studio 中加载 ChromeDriver 源并构建它。但是当我拉取 ChromeDriver 的源代码时,我看到了几个没有任何项目文件的 C 文件,如 *.vcxproj。搜索这个主题,我发现它可以使用 Ninja 构建。有一些命令“ninja -C out\Release chromedriver”可以为我做这件事。所以我从 github 获取了 Ninja 的源代码。但是当我尝试运行构建命令时,它会抱怨/发布文件或目录不存在。它确实不存在于我获取 Ninja 的文件夹中。我拥有的唯一信息是,一旦我生成 Ninja 文件,out 文件夹就会在那里。但是我完全不知道如何去做或者它的先决条件是什么。回到我需要它的原因:在 selenium webdriver 代码中,ChromeDriver 是使用 C# 进程类启动的。所以我从 github 获取了 Ninja 的源代码。但是当我尝试运行构建命令时,它会抱怨/发布文件或目录不存在。它确实不存在于我获取 Ninja 的文件夹中。我拥有的唯一信息是,一旦我生成 Ninja 文件,out 文件夹就会在那里。但是我完全不知道如何去做或者它的先决条件是什么。回到我需要它的原因:在 selenium webdriver 代码中,ChromeDriver 是使用 C# 进程类启动的。所以我从 github 获取了 Ninja 的源代码。但是当我尝试运行构建命令时,它会抱怨/发布文件或目录不存在。它确实不存在于我获取 Ninja 的文件夹中。我拥有的唯一信息是,一旦我生成 Ninja 文件,out 文件夹就会在那里。但是我完全不知道如何去做或者它的先决条件是什么。回到我需要它的原因:在 selenium webdriver 代码中,ChromeDriver 是使用 C# 进程类启动的。但是我完全不知道如何去做或者它的先决条件是什么。回到我需要它的原因:在 selenium webdriver 代码中,ChromeDriver 是使用 C# 进程类启动的。但是我完全不知道如何去做或者它的先决条件是什么。回到我需要它的原因:在 selenium webdriver 代码中,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 框架构建的。我在上面的代码中使用了这个 exe 的路径而不是 ChromeDriver。并且 p.Start() 成功执行,没有错误。

因此,问题归结为 ChromeDriver.exe 的 Mono 版本。在 chromedriver 的网站上,他们有适用于 Windows 的 ChromeDriver.exe,适用于 Mac 的 ChromeDriver.dmg,但没有 Mono 版本。我正在寻找以下 3 个解决方案中的任何一个: 1. 如果使用 Mono 构建的 ChromeDriver.exe 已经上传到某个地方,那就没有比这更好的了。2. 我可以尝试使用 Mono 构建 ChromeDriver 源代码(https://github.com/scheib/chromium/tree/master/chrome/test/chromedriver)的步骤。3. 完全跳过构建它并找到其他方法在 Mac 中启动 ChromeDriver.exe。

在过去的几天里,我对所有这些都摸不着头脑:(。任何帮助将不胜感激!如果需要更多信息,请告诉我。请帮助..

在此先感谢,德布

4

1 回答 1

0

抱歉缺席了一年!非常感谢您的关注。是的,我终于能够做到了。从http://chromedriver.storage.googleapis.com/index.html下载了 Mac 版的 chromedriver 。并且只需在我用 Xamarin Studio 编写的 C#(单声道)代码中使用它。我能够使用通常的“SeleniumDriver = new ChromeDriver(driverLibrary);”调用 ChromeDriver 陈述。但我不得不在多个地方对 C# 代码进行更多更改,以使整个自动化框架在 Mac 上运行。我忘记了更精细的细节,但记住它很有趣!人们很高兴看到 Webdriver+Mono 在 Mac 上做这件事!

于 2015-04-03T18:15:10.720 回答