私が使用しています:Selenium C#でChromeのタブを切り替えるにはどうすればよいですか?
- クローム55.0.2
- セレンをChromeDriverとwebdriverを3.0.1
- のC#4.6.1(VS2015コミュニティ版)
私は、オートメーションコードを書いていていますChromeを開き、タブを開き、メインページのURLに移動します。このメインページには、セカンダリページURLを生成するために解析する情報があります。私の問題は、セカンダリページが読み込まれた後にメインページタブに戻るコードを書くことができず、メインページから離れないコードを書くことができないことです。 、URLに移動Chromeを持って、私はこの二次ページのURLを生成した後、私は別のタブを開きたいctrl-click
のように振る舞う -
がオプション#1は:私は私が追求しています2つのオプションが説明しますChromeのメインページタブを離れることはありません。これはリンク上のctrl-click
に似ています。
オプション#2 - 私も解決策に満足するでしょう
(Chromeでタブ1に切り替える)ctrl-1
のように振る舞い、新しいクロームタブで、二次ページのURLをナビゲートし、ロードした後、オートメーションはChromeのメインページタブに戻ります。これは、キーボードに「ctrl-1
」と入力するのと同じですが、Chromeにはフォーカスがあります。
オプション#3 - 他に何か?
新しい技術レイヤーを導入することなく、私が探しているものを達成する他のソリューションでも満足できます。
いくつかの背景情報は、 - ナビゲーション
私が最初に以下の方法を試してみましたが、それはメインページと同じクローム]タブで生成されたURLを開くので、それは私の要件を失敗します。
Session.Driver.Navigate().GoToUrl(generatedUrl);
Chromeの新しいタブでURLを開くための「直接的な」C#\ Chrome \ WebDriverコマンドは見つかりませんでした。現在のタブは常に使用されます。
新しいタブでURLを開くjavascriptを使用してコードを見つけることができました。
// open a new tab and navigate to generated url:
IJavaScriptExecutor jscript = Session.Driver as IJavaScriptExecutor;
jscript.ExecuteScript(string.Format("window.open('{0}', '_blank');", generatedUrl));
JavaScriptを実行すると、セカンダリページが開き、Chromeのアクティブなタブになります。ここでは、バックChromeのメインページのタブに移動し、私の試みです:もちろんの
私の試み
私はなど、タブを切り替えるには多くの方法を試してみましたここで彼らは、すべての障害です:
試み#1:SwitchTo()
私はSession.Driver.WindowHandles
を使用して各ウィンドウハンドルにアクセスできるようにしています。次のコマンドをデバッグすると、最初のウィンドウハンドルが実際にメインページであることがわかります。ただし、コマンドは何もしません。タブは変更されません。クロムは、セカンダリページ\タブに注目し続けます。また、エラーメッセージも表示されません。私がオンラインで読んだことから、このコマンドはタブを切り替えることになっていました。
Session.Driver.SwitchTo().Window(Session.Driver.WindowHandles.First());
試み#2:キーを送信する - それは働いていた場合のアクション
このアプローチは、本当に素晴らしいことです。繰り返しになりますが、次のコードは影響を受けず、Chromeはセカンダリページ\タブにフォーカスしています。また、エラーメッセージも表示されません。
Actions action = new Actions(Session.Driver);
action.SendKeys(Keys.Control + "1").Build().Perform();
土壇場の努力として、私は現在、私は、タブを切り替えることIJavaScriptExecutor
で使用できるJavaScriptのコマンドを探していないのです - これまでのところ運を。
シナリオを複製しました。なぜあなたのケースで 'SwitchTo()'がうまくいかなかったのか分かりません。しかし、これは私のために働いた。 "((IJavaScriptExecutor)ドライバ).ExecuteScript(" window.open( '_ blank'、 'tab2'); ");' driver.SwitchTo()。Window( "tab2"); '。 – Gokul