2016-04-27 98 views
1

プロジェクトでは、オプションを右クリックしてそこから「新しいウィンドウでリンクを開く」を選択したいと考えています。私は以下のセレン - javaコードを書いています。このコードでは、「新しいウィンドウで開くリンク」でクロールしていますが、その後、新しいウィンドウで必要なリンクを開くためにそのオプションをクリックしていません。必要に応じて、コードを直接コピーして貼り付けて、実行フローを視覚化することができます。それはまた右クリックメニューから特定のオプションをクリックしていないSelenium

oAction.moveToElement(env); 
oAction.contextClick(env).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform(); 

に動作しますENTER代わりにクリック使用のHI

package pack_001; 

import java.util.Set; 
import java.util.concurrent.TimeUnit; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.interactions.Actions; 
import org.openqa.selenium.JavascriptExecutor; 
import org.openqa.selenium.Keys; 

public class mail { 
    public static WebDriver driver=new FirefoxDriver(); 
    public static void main(String args[]) 
    { 
      driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
      driver.get("http://www.tutorialspoint.com/java/"); 
      driver.manage().window().maximize(); 
      WebElement env=driver.findElement(By.linkText("Java - Environment Setup")); 
      System.out.println("Env point out"); 
      Actions oAction = new Actions(driver); 

      oAction.moveToElement(env); 
      oAction.contextClick(env).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).click().build().perform(); /* this should click on the option*/ 



    } 

} 
+0

解決同じ効果を得るために、あなたは新しい 'WebDriver'を作成し、そのリンクにナビゲートすることができます。例: 'driver2.get(env.getAttribute(" href "));' – Titus

+0

この部分を詳しく教えてください。私はリンクのWebElementを「要素」と呼んでいるのですが、新しいウィンドウでどのようにそれを開くことができるのでしょうか。 – RCode

+0

新しいWebDriveを作成する必要がある新しいウィンドウを作成するには、次のようにします: 'WebDriver driver2 = new FirefoxDriver(); '、この新しいウィンドウで' element'リンクを開くには、 'drive2.get(element.getAttribute(" href "));'を実行します。これは 'element'がHTMLの' '要素であれば動作します。また、Firefoxには新しいウィンドウ 'SHIFT + Left Click'でリンクを開くためのショートカットがあります。 – Titus

答えて

0

....私の意図は、新しいウィンドウでリンクを開くことです私が行っている間違いがどこにあるか私が理解するのに役立ちますなぜ与えwebElementと新しいタブオプションの途中で原因クリッククリックを動作しません]をクリックすると、これは確かに新しいwindwoでタブを開きます

webElementない

UPDATE

public class DropDownSelection { 
    public static WebDriver driver=new FirefoxDriver(); 
    public static void main(String[] args) { 
      driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 

     // i have used a sample url exactly as similar to your problem 
     driver.get("http://desirulez.biz/category/wrestlingnetwork/wwe/wwe-raw/"); 
     driver.manage().window().maximize(); 

     // way One 
     Actions oAction = new Actions(driver); 

     // now simply hover over the WWE - Menu in your case 
     WebElement Menu = driver.findElement(By.xpath("//*[@id='menu-item-8']/a")); 
     oAction.moveToElement(Menu).build().perform(); 
     // hovering will open its sub-menu - Configure in your case 
     // now identify the sub-menu that you want to click/hover 
     WebElement Configure = driver.findElement(By.xpath("//*[@id='menu-item-8']/ul/li[7]/a")); 
     oAction.moveToElement(Configure).build().perform(); 
     // now hovering over it will open its sub menu 
     // in your case Manage 
     // now identify the sub-menu that you want to click/hover 
     WebElement Manage = driver.findElement(By.xpath("//*[@id='menu-item-8']/ul/li[7]/ul/li/a")); 
     oAction.moveToElement(Manage).click().build().perform(); 

     // way Two 
     // note if you want to chain above you can even do that like below 
     oAction.moveToElement(Menu).moveToElement(Configure).moveToElement(Manage).click().build().perform(); 
} 
} 

ホープこれはあなたのクエリ

+0

ありがとう@raj ....私は試してみましょう、私はあなたの進捗状況を知らせる.... – RCode

+0

私はあなたの目標についてもう少し詳しく説明しましょう。あなたのソリューションは、ほとんどのWebサイトでうまく機能していますが、これも便利な方法であることがわかりました。しかし、実際に新しいウィンドウでリンクを開こうとしていた環境は安定していません。時々それは働いていて、失敗することもあります。 "menu"オプション - >ドロップダウンリスト - > "Configure"オプション - > another submenu - >今度は新しいウィンドウで "Manage"を開く必要があります。だから、 "管理"オプションまでは問題ありません。しかし、上記の解決策は「管理」をうまくクリックしていることがあります。 – RCode

+0

時にはそれをクリックすることができません...私を助けてください... – RCode

関連する問題