2017-09-12 25 views
-1

コード言語C#の セレンwebdriverを新しいタブを開くには、

動作しない私はクロームで、次のコードで新しいタブを開くしようとしている:

 Actions action = new Actions(BrowserFactory.Driver); 
     action.SendKeys(Keys.Control + "T").Build().Perform(); 
     string secondTabHandle = BrowserFactory.Driver.CurrentWindowHandle; 

私はstackoverflow上でこのコードを見つけました。

私も試してみました:

 IWebElement body = 
     BrowserFactory.Driver.FindElement(By.TagName("body")); 
     body.SendKeys(Keys.Control+'t'); 
     body.SendKeys(Keys.Control+"t"); 

ザッツも機能していない

何もこのコードを使用した後に起こりません。

私が間違っていることを助けてくれる人がいますか?

ありがとうございます。

+1

可能な複製(https://stackoverflow.com/questions/17547473/how-to-open-a [Javaを使用セレンwebdriverをを使用して、新しいタブを開く方法?] -new-tab-using-selenium-webdriver-with-java) – Liam

+0

これはJavaと同じで、C# – Liam

+0

と同様に無視されます。 IWebElement body = BrowserFactory.Driver.FindElement(BytagName( "body")) ); body.SendKeys(Keys.Control + 't'); そのページで説明したとおりですが、何もしません。 – xxx2017

答えて

0

より良い解決策は、異なるブラウザまたは同じブラウザの異なるバージョンでCTRL + Tを押すと、異なる動作につながる可能性があるため、CTRL + Tなどを押すことに依存しません。

セレンでネイティブにサポートされているブラウザでjavascriptを挿入して実行するため、ブラウザでjavascriptを実行して新しいタブを開くソリューションが好きです。

  1. リンク・ノードを作成し、リンクのhrefが「について:空白」で設定します。リンク先を設定するか、開きたいURL我々はJavaScriptをブラウザ上で物事を次の操作を行い確認する必要があり

    「_blank」

  2. は、リンクをクリックして、現在のオープニングページ

  3. の身体へのリンクノードを追加し、身体からのリンクを削除している

コード例:の

string newTabScript = "var d=document,a=d.createElement('a');" 
+ "a.target='_blank';a.href='{0}';" 
+ "a.innerHTML='new tab';" 
+ "d.body.appendChild(a);" 
+ "a.click();" 
+ "a.parentNode.removeChild(a);" 

public void newTab(string tabUrl) 
{ 
    if(String.IsNullOrEmpty(tabUrl) { 
    tabUrl = "about:blank"; 
    } 
    IWebDriver driver; // assume assigned elsewhere 
    IJavaScriptExecutor js = (IJavaScriptExecutor)driver; 
    js.ExecuteScript(String.format(newTabScript, tabUrl)); 
} 
+0

タブを切り替えるコードもありますか? – xxx2017

+0

クロムブラウザについては、http://www.binaryclips.com/2016/03/selenium-webdriver-in-c-switch-to-new.htmlとしてみてください。スウィッチの後にリマインダーがタブは変更されていませんが、実際には切り替えられたタブで動作するスクリプトが機能するはずです。 – yong

関連する問題