zoukankan      html  css  js  c++  java
  • [Selenium+Java] Keyboard & Mouse Event using Action Class in Selenium Webdriver

    Original Source: https://www.guru99.com/keyboard-mouse-events-files-webdriver.html

    Handling Keyboard & Mouse Events

    Handling special keyboard and mouse events are done using the Advanced User Interactions API. It contains the Actions and the Action classes that are needed when executing these events. The following are the most commonly used keyboard and mouse events provided by the Actions class.

    MethodDescription
    clickAndHold() Clicks (without releasing) at the current mouse location.
    contextClick() Performs a context-click at the current mouse location.
    doubleClick() Performs a double-click at the current mouse location.
    dragAndDrop(source, target) Performs click-and-hold at the location of the source element, moves to the location of the target element, then releases the mouse.

    Parameters:

    source- element to emulate button down at.

    target- element to move to and release the mouse at.
    dragAndDropBy(source, x-offset, y-offset) Performs click-and-hold at the location of the source element, moves by a given offset, then releases the mouse.

    Parameters:

    source- element to emulate button down at.

    xOffset- horizontal move offset.

    yOffset- vertical move offset.
    keyDown(modifier_key) Performs a modifier key press. Does not release the modifier key - subsequent interactions may assume it's kept pressed.

    Parameters:

    modifier_key - any of the modifier keys (Keys.ALT, Keys.SHIFT, or Keys.CONTROL)
    keyUp(modifier _key) Performs a key release.

    Parameters:

    modifier_key - any of the modifier keys (Keys.ALT, Keys.SHIFT, or Keys.CONTROL)
    moveByOffset(x-offset, y-offset) Moves the mouse from its current position (or 0,0) by the given offset.

    Parameters:

    x-offset- horizontal offset. A negative value means moving the mouse left.

    y-offset- vertical offset. A negative value means moving the mouse down.
    moveToElement(toElement) Moves the mouse to the middle of the element. 

    Parameters:

    toElement- element to move to.
    release() Releases the depressed left mouse button at the current mouse location
    sendKeys(onElement, charsequence) Sends a series of keystrokes onto the element. 

    Parameters:

    onElement - element that will receive the keystrokes, usually a text field

    charsequence - any string value representing the sequence of keystrokes to be sent

    In the following example, we shall use the moveToElement() method to mouse-over on one Mercury Tours' table rows. See the example below.

    Keyboard & Mouse Event using Action Class in Selenium Webdriver

    The cell shown above is a portion of a <TR> element. If not hovered, its color is #FFC455 (orange). After hovering, the cell's color becomes transparent. It becomes the same color as the blue background of the whole orange table.

    Step 1: Import the Actions and Action classes.

    Keyboard & Mouse Event using Action Class in Selenium Webdriver

    Step 2: Instantiate a new Actions object.

    Keyboard & Mouse Event using Action Class in Selenium Webdriver

    Step 3: Instantiate an Action using the Actions object in step 2.

    Keyboard & Mouse Event using Action Class in Selenium Webdriver

    In this case, we are going to use the moveToElement() method because we are simply going to mouse-over the "Home" link. The build() method is always the final method used so that all the listed actions will be compiled into a single step.

    Step 4: Use the perform() method when executing the Action object we designed in Step 3.

    Keyboard & Mouse Event using Action Class in Selenium Webdriver

    Below is the whole WebDriver code to check the background color of the <TR> element before and after the mouse-over.

    package newproject;
    
    import org.openqa.selenium.*;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.interactions.Action;
    import org.openqa.selenium.interactions.Actions;
    
    public class PG7 {
        
        public static void main(String[] args) {
            String baseUrl = "http://demo.guru99.com/test/newtours/";
            System.setProperty("webdriver.firefox.marionette","C:\geckodriver.exe");
                    WebDriver driver = new FirefoxDriver();
    
                    driver.get(baseUrl);           
                    WebElement link_Home = driver.findElement(By.linkText("Home"));
                    WebElement td_Home = driver
                            .findElement(By
                            .xpath("//html/body/div"
                            + "/table/tbody/tr/td"
                            + "/table/tbody/tr/td"
                            + "/table/tbody/tr/td"
                            + "/table/tbody/tr"));    
                     
                    Actions builder = new Actions(driver);
                    Action mouseOverHome = builder
                            .moveToElement(link_Home)
                            .build();
                     
                    String bgColor = td_Home.getCssValue("background-color");
                    System.out.println("Before hover: " + bgColor);        
                    mouseOverHome.perform();        
                    bgColor = td_Home.getCssValue("background-color");
                    System.out.println("After hover: " + bgColor);
                    driver.close();
            }
    }
    

    The output below clearly states that the background color became transparent after the mouse-over.

    Keyboard & Mouse Event using Action Class in Selenium Webdriver

    Building a Series of Multiple Actions

    You can build a series of actions using the Action and Actions classes. Just remember to close the series with the build() method. Consider the sample code below.

    Keyboard & Mouse Event using Action Class in Selenium Webdriver

    Keyboard & Mouse Event using Action Class in Selenium Webdriver

    Summary

    • Handling special keyboard and mouse events are done using the AdvancedUserInteractions API.
    • Frequently used Keyword and Mouse Events are doubleClick(), keyUp, dragAndDropBy, contextClick & sendKeys.
  • 相关阅读:
    WDK中出现的特殊代码
    敏捷是怎样炼成的
    推荐一个非常好玩的falsh游戏
    软件安全技术
    J2EE的昨天,今天,明天
    Java打印程序设计
    关于父亲
    xml发展历史和用途
    CRM与ERP整合的六个切入点
    SEO(搜索引擎最佳化)简介
  • 原文地址:https://www.cnblogs.com/alicegu2009/p/9073066.html
Copyright © 2011-2022 走看看