2017-10-30 6 views
1
public void shiftClick() { 
    if(WebBrowser.isInternetExplorer()) { 
     try { 
      Robot robot = new Robot(); 
      try { 
       WindowManagement.setBrowserFocus(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      robot.keyPress(KeyEvent.VK_SHIFT); 
      this.clickElement(); 
      robot.keyRelease(KeyEvent.VK_SHIFT); 
     } catch (AWTException e) { 
      throw new AssertionError(e.getMessage()); 
     } 

    } else { 
     Actions actions = new Actions(Browser.getWebDriver(null)); 
     actions.keyUp(Keys.SHIFT).click(this.getWebElement()).keyUp(Keys.SHIFT).perform(); 
    } 
} 

セレンを2.53から3.6.0にアップグレードした後にシフトクリックが機能しません。私はAWTロボットメソッドを試して、Actionキーメソッドを試しました。シフトクリックを実行する他の方法はありますか? IEとwebdriverをを使用するためのIE11でSelenium 3.6でシフトクリックを実行する方法

+0

コンソールになっている任意の特定のエラーがありますか? –

+0

コンソールにエラーがないので混乱しています –

+0

「動作しません」よりも具体的にする必要があります。 2.53と3.6.0の両方でメソッドをデバッグする - 同じコードパスを使用しますか? – Michael

答えて

0

のヒント(いくつかは、あなたがhereを見つけることができ、それらをOT):

  • 無効にEnhanced Protected Mode IEのオプションで
  • セットブラウザのズームレベルを100%に
  • のWindows 10の場合、またディスプレイの設定で「テキスト、アプリ、その他のアイテムのサイズを100%」に設定する必要があります。
  • だけIE 11の場合は、レジストリエントリを設定する必要があります - 0の値でiexplore.exeをという名前のDWORD値を作成:32ビットWindowsの場合
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHEについては
    • 64ビットをWindowsの場合:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE
  • はを有効にするには、同じ値
  • 使用requireWindowFocusオプション
  • 試してみるように、各ゾーンの保護モード設定を設定、それは時々
  • は常に要素がIEのウィンドウの外でクリック は通常
  • に動作しない場合は、画面内の要素が見えるようにするためには、それをクリックする前に、要素にIEのウィンドウ
  • スクロールを最大限に活用できます

IE11 Windows 10 WebDriver 3.6.0の使用例。
このページでは、要素がクリックされたときにSHIFTキーが押されたかどうかを検出する方法を示すw3schoold click whith SHIFT key pressed
を示します。

WebDriver driver= null; 
try{ 
    InternetExplorerOptions opt = new InternetExplorerOptions(); 
    // opt.enableNativeEvents(); 
    opt.requireWindowFocus(); 

    driver=new InternetExplorerDriver(opt); 

    driver.manage().window().maximize(); 

    driver.get("https://www.w3schools.com/js/tryit.asp?filename=tryjs_dom_event_shiftkey"); 

    final By clickOnThis = By.xpath("//p[ text() = 'Click on this paragraph. An alert box will tell you if you pressed the shift key or not.' ]"); 
    final By message = By.xpath("//p[ text() = 'The shift key was pressed!' ]"); 

    WebDriverWait wait = new WebDriverWait(driver, 5); 

    driver.switchTo().defaultContent(); 
    driver.switchTo().frame("iframeResult"); 

    WebElement clickOnMe = wait.until(ExpectedConditions.visibilityOfElementLocated(clickOnThis)); 

    Actions actions = new Actions(driver); 

    actions.keyDown(Keys.SHIFT).click(clickOnMe).keyUp(Keys.SHIFT); 
    actions.build().perform(); 

    wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(message)); 

    System.out.println("SHIFT-cLick detected"); 

    Thread.sleep(5000); 
}finally { 
    if(driver!=null) { 
     driver.quit(); 
    } 
} 
関連する問題