2017-10-02 3 views
0

私はリンクを右クリックする必要があります。コンテキストメニューが表示されたら、「シークレットウィンドウでリンクを開く」オプションをクリックする必要があります。 下のコードスニペットでこれを達成しようとすると、コンテキストメニューが表示されるのを見ることができますが、新しいウィンドウでリンクを起動するのではなく、同じウィンドウでリンクが開始されます。セレンのコンテキストメニューから右クリックオプションを選択

driver = new ChromeDriver(); 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    driver.get("http://www.google.com/"); 
    Actions action = new Actions(driver); 
    WebElement ele = driver.findElement(By.linkText("About")); 
action.contextClick(ele).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).perform(); 

これを実現する方法を教えてください。

答えて

0

シークレットウィンドウでリンクを開くためのキーボードショートカットがあるかもしれませんが、見つけられませんでしたが、長く見ていませんでした。あなたは運が良いかもしれません。

もう1つの方法は、クリックするリンクのURLを取得し、キーボードショートカット(CTRL + SHIFT + N)を使用してシークレットウィンドウを開き、URLに移動することです。理想的ではありませんが、これを行う別の方法はわかりません。

シークレットウィンドウでスクリプトを開始してそこから先に進むことはできません。

+0

私は親ウィンドウからのリンクをクリックすることで、二つのウィンドウ/タブを開き、両方のウィンドウで同時にいくつかの操作を実行する必要があるシナリオを持っていますdriver.switchTo()を使用します。私はシークレットでそのウィンドウを開いてブラウザセッションが異なることを確認しようとしています – Yogiraj

0

は、このコンテキストメニューには、HTMLページの一部ではありませんが、これは/ webdriverを、デスクトップアプリケーションを自動化する機能を持っていない、あなたが使用できるのAutoItまたは類似クロム(デスクトップアプリケーション)
セレンからメニューですそれを行うソフトウェア

しかし、必要なのは新しいブラウザセッションを開くことだけです(シークレットウィンドウは新しい独立したブラウザセッションです)。ちょうど新しいクロームドライバを開くwebdriverをを使用して、この動作をシミュレートするには

WebDriver drv1 = new ChromeDriver(); 

drv1.get("https://www.google.pl"); 
drv1.findElement(By.name("q")).sendKeys("About"); 
........ 
........ 

// This will open a new browser window with a new, independent browser session 
WebDriver drv2 = new ChromeDriver(); 
drv2.get("https://www.google.pl"); 
drv2.findElement(By.name("q")).sendKeys("Hello"); 
........ 
........ 
drv1.do-Something-in-session-1 
..... 
drv2.do-Something-other-in-session-2 
.... 
+0

あなたの返信をありがとう、私はいつも別のwebDriverセッションを作成するオプションがありましたが、この特定のシナリオは唯一のカップルテストのしかし、あなたのポインタのために、コンテキストメニューがウィンドウから来ていることをお祈りします。私はそれがブラウザからであり、DOMの一部であると思っていました。 – Yogiraj

+0

externallツール(たとえばAutoIt)を使用してこのメ​​ニューを自動化しても、WebDriverの外に新しいブラウザウィンドウが開き、Seleniumはそのセッションを認識せず、処理できなくなります。 – krokodilko

+0

ああですか?あなたが考えることができる他のオプション? – Yogiraj

関連する問題