WinFormsプロジェクト(Visual Studio 2012)にChromiumWebBrowserのインスタンスが2つあります。私の目標は、第2のブラウザインスタンスに、第1のブラウザインスタンスにおけるユーザ入力の挙動を「コピー」させることである。私は最初のブラウザからの入力を正常に取得することができ、私はプロジェクトでSeleniumを接続することもできました。C#で複数のChromiumWebBrowserインスタンスを処理できない
しかし、私は1つの問題があります。 Seleniumがコマンドを送信するたびに、最初のブラウザが応答します。私の人生にとって、私は第2のブラウザをどのように応答させるかを理解できないようです。最初のブラウザを完全に削除すると、2番目のブラウザは正しく応答し始めますが、最初のブラウザをもう一度追加すると、最初のブラウザでSeleniumコマンドを使用するようになります。私は、ブラウザがフォームに追加された瞬間を切り捨てようとしましたが、役に立たなかったのです。利用可能な2つがあるときはいつでも、間違ったものが反応します。
関連するコード:
public BrowserManager(Controller controller, string startingUrl)
{
_controller = controller;
var settings = new CefSettings { RemoteDebuggingPort = 9515 };
Cef.Initialize(settings);
// Input browser
inputBrowser = new ChromiumWebBrowser(startingUrl);
var obj = new XPathHelper(this);
inputBrowser.RegisterJsObject("bound", obj); //Standard object registration
inputBrowser.FrameLoadEnd += obj.OnFrameLoadEnd;
// Output browser
var browserSettings = new BrowserSettings();
var requestContextSettings = new RequestContextSettings { CachePath = "" };
var requestContext = new RequestContext(requestContextSettings);
outputBrowser = new ChromiumWebBrowser(startingUrl);
outputBrowser.RequestContext = requestContext;
outputBrowser.AddressChanged += InitializeOutputBrowser;
outputBrowser.Enabled = false;
outputBrowser.Name = "outputBrowser";
}
セレンの一部:
public class SeleniumHelper
{
public SeleniumHelper()
{
DoWorkAsync();
}
private Task DoWorkAsync()
{
Task.Run(() =>
{
string chromeDriverDir = @"ActionRecorder\bin\x64\Debug\Drivers";
var chromeDriverService = ChromeDriverService.CreateDefaultService(chromeDriverDir);
chromeDriverService.HideCommandPromptWindow = true;
ChromeOptions options = new ChromeOptions();
options.BinaryLocation = @"ActionRecorder\bin\x64\Debug\ActionRecorder.exe";
options.DebuggerAddress = "127.0.0.1:9515";
options.AddArguments("--enable-logging");
using (IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver(chromeDriverService, options))
{
driver.Navigate().GoToUrl("http://www.google.com");
var query = driver.FindElement(By.Name("q"));
query.SendKeys("A google search test");
query.Submit();
}
});
return null;
}
}
そして最後に、いくつかの可視化のためのスクリーンショット:
問題といくつかの助けがあることでしょう非常に高く評価。私がいくつかの重要な情報を見逃した場合は、それを求めて自由に感じてください。前もって感謝します!
Greetz、 Tybs
非常に正確な答えに非常に関連しました!私は、タブの設定については何の手掛かりも持っていなかったので、少し勉強していいです。どうもありがとうございました! – Tybs