• 章节十四、10-按键事件


    一、如何按键盘上的按键:

     1 package keypress;
     2 
     3 import static org.junit.jupiter.api.Assertions.*;
     4 
     5 import java.util.concurrent.TimeUnit;
     6 
     7 import org.junit.jupiter.api.AfterEach;
     8 import org.junit.jupiter.api.BeforeEach;
     9 import org.junit.jupiter.api.Test;
    10 import org.openqa.selenium.By;
    11 import org.openqa.selenium.Keys;
    12 import org.openqa.selenium.WebDriver;
    13 import org.openqa.selenium.chrome.ChromeDriver;
    14 
    15 class KeyPressDemo1 {
    16 
    17     WebDriver driver;
    18     String url;
    19     
    20     @BeforeEach
    21     void setUp() throws Exception {
    22         driver = new ChromeDriver();
    23         url = "https://login.yahoo.com/config/login?.src=fpctx&.intl=us&.lang=en-US&.done=https%3A%2F%2Fwww.yahoo.com";
    24         driver.manage().window().maximize();
    25         driver.manage().timeouts().implicitlyWait(2000, TimeUnit.SECONDS);
    26         driver.get(url);
    27     }
    28 
    29     @Test
    30     void test() throws InterruptedException {
    31         driver.findElement(By.id("login-username")).sendKeys("test");
    32         Thread.sleep(2000);
    33 //        按键盘上的enter按钮,发送回车键
    34 //        Keys.按键:可以根据自己的需要进行相应的按键设置
    35         driver.findElement(By.id("login-signin")).sendKeys(Keys.ENTER);
    36     }
    37     
    38     @AfterEach
    39     void tearDown() throws Exception {
    40         Thread.sleep(2000);
    41         driver.quit();
    42     }
    43 }

    二、如何按键盘上的组合键:

     1 package keypress;
     2 
     3 import static org.junit.jupiter.api.Assertions.*;
     4 
     5 import java.util.concurrent.TimeUnit;
     6 
     7 import org.junit.jupiter.api.AfterEach;
     8 import org.junit.jupiter.api.BeforeEach;
     9 import org.junit.jupiter.api.Test;
    10 import org.openqa.selenium.By;
    11 import org.openqa.selenium.Keys;
    12 import org.openqa.selenium.WebDriver;
    13 import org.openqa.selenium.chrome.ChromeDriver;
    14 
    15 class KeyPressDemo2 {
    16     
    17     WebDriver driver;
    18     String url;
    19     
    20     @BeforeEach
    21     void setUp() throws Exception {
    22         driver = new ChromeDriver();
    23         url = "file:///C:/Users/acer/Desktop/%E5%85%B6%E5%AE%83/PracticePage2.html";
    24         driver.manage().window().maximize();
    25         driver.manage().timeouts().implicitlyWait(2000, TimeUnit.SECONDS);
    26         driver.get(url);
    27     }
    28 
    29     @Test
    30     void test() throws InterruptedException {
    31 //        方法一:
    32 //        driver.findElement(By.id("openwindow")).sendKeys(Keys.CONTROL+"a");
    33         
    34 //        方法二:
    35 //        driver.findElement(By.id("openwindow")).sendKeys(Keys.chord(Keys.CONTROL,"a"));
    36 //        chord方法返回值是String类型的,为了便于理解,因此我们可以这样写:
    37         String seclect = Keys.chord(Keys.CONTROL,"a");
    38         driver.findElement(By.id("openwindow")).sendKeys(seclect);
    39         Thread.sleep(2000);
    40 
    41     }
    42     
    43     @AfterEach
    44     void tearDown() throws Exception {
    45         Thread.sleep(2000);
    46         driver.quit();
    47     }
    48 }

    三、用Actions类直接处理按键事件

     1 package keypress;
     2 
     3 import java.util.concurrent.TimeUnit;
     4 
     5 import org.junit.jupiter.api.AfterEach;
     6 import org.junit.jupiter.api.BeforeEach;
     7 import org.junit.jupiter.api.Test;
     8 import org.openqa.selenium.Keys;
     9 import org.openqa.selenium.WebDriver;
    10 import org.openqa.selenium.chrome.ChromeDriver;
    11 import org.openqa.selenium.interactions.Actions;
    12 
    13 class KeyPressDemo3 {
    14 
    15     WebDriver driver;
    16     String url;
    17     
    18     @BeforeEach
    19     void setUp() throws Exception {
    20         driver = new ChromeDriver();
    21         url = "file:///C:/Users/acer/Desktop/%E5%85%B6%E5%AE%83/PracticePage2.html";
    22         driver.manage().window().maximize();
    23         driver.manage().timeouts().implicitlyWait(2000, TimeUnit.SECONDS);
    24         driver.get(url);
    25     }
    26 
    27     @Test
    28     void test() {
    29         Actions actions = new Actions(driver);
    30         actions.keyDown(Keys.CONTROL).sendKeys("a").keyDown(Keys.CONTROL).perform();
    31     }
    32     
    33     @AfterEach
    34     void tearDown() throws Exception {
    35         Thread.sleep(2000);
    36         driver.quit();
    37     }
    38 }

    注:

    1、actions操作按键时,有按下动作,也需要有松开动作。  

    keyDown():表示按下按键动作

    keyDown(Keys.CONTROL).sendKeys("a"):表示同时按下Ctrl+A

    keyDown():表示松开按键动作

    keyDown(Keys.CONTROL):表示松开Ctrl

    2、actions方法都需要使用.perform()执行,如果.perform()不能成功执行actions,那么还需要加上.bulid.perform()。

    3、使用actions可以直接操作按键,不需要先查找元素。

    如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴相互一起学习。

    内容具有连惯性,未标注的地方可以看前面的博客,这是一整套关于ava+selenium自动化的内容,从java基础开始。

    欢迎关注,转载请注明来源。

  • 相关阅读:
    dedecms 5.7 站点文件从本地子目录上传到远程根目录后找不到模板的解决方案
    Dedecms实现"文章标题2级栏目1级栏目网站名"
    织梦安装在子目录会出现问题的解决技巧集合
    ASP.NET三层架构中数据层数据访问类部分代码
    织梦DEDECMS缩短URL路径长度的方法
    CSS各种属性全集
    css和js引用图片路径
    ASP.Net中FileUpLoad控件内容清空
    WampServer的配置
    asp.net 中的 callback
  • 原文地址:https://www.cnblogs.com/luohuasheng/p/11115935.html
Copyright © 2020-2023  润新知