selenium 方法发送密钥如何工作?

问题描述 投票:0回答:1

我正在测试一个创建新对象的表单。 该对象是根据整数和字符串输入构建的。 在每个字段中,我都试图测试负数的输入。 如果我输入负数,(-) 符号会自动删除(甚至不显示)。 如果我复制粘贴负数,它将按原样显示在字段中。 如果我使用 sendkeys 方法,它的工作原理是复制粘贴:接受负数。 此外,当我复制粘贴小数时,它会四舍五入为整数: 40.72 自动变为 41. 当我输入 40.72 时,它会变成 412。发送键也是如此。

发送键方法应该如何发挥作用?好像我正在打字?好像我是复制粘贴的? 预先感谢。

我期望发送键能够模仿打字动作(可能是错误的)。 应该从负数中删除减号。 结果: 输入 - (-120): 打字 - (120) 复制粘贴 - (-120) 发送密钥 - (-120)

输入 - 40.72(应四舍五入到最接近的整数) 打字 - 412 复制粘贴 - 41 发送密钥 - 412

java validation selenium-webdriver testing
1个回答
0
投票

我假设您想在任何文本字段中模仿键盘的打字操作。为此,您可以使用 Robot 类的实例来模拟键盘操作。

您可以参考以下代码作为示例

public static void main(String[] args) throws AWTException {
    WebDriver d = new ChromeDriver();
    d.get("url of the form");
    WebElement we = d.findElement(By.xpath("xpath of the input field"));
    we.click();
    int[] keys = { KeyEvent.VK_MINUS, KeyEvent.VK_1, KeyEvent.VK_2, KeyEvent.VK_0, KeyEvent.VK_B };//Let us say you want to enter '-120b' in the text field
    // Please import java.awt.event.KeyEvent for access KeyEvent class
    enterData(keys);
    }
public static void enterData (int[] keys) throws AWTException {
    Robot r = new Robot(); //Using Robot class to simulate the keyboard action and please import java.awt.* for accessing it
    for(int key : keys){
        r.keyPress(key);
        r.keyRelease(key);
    }
}

我创建了 EnterData() 方法来一次按下并释放一个键,但如果您想发送“Ctrl + V”等组合键来粘贴任何内容,那么您需要按下并释放与该键完全相同的按键事件您可以通过物理方式进行操作,例如首先按 Ctrl 键,然后按 V 键,然后释放 V 键,然后释放 Ctrl 键。在下面的代码中也可以观察到同样的情况

r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_V);
r.keyRelease(KeyEvent.VK_V);
r.keyRelease(KeyEvent.VK_CONTROL);

这里所有名称为 VK_ 的标识符都是虚拟键,它们只不过是 KeyEvent 类中的静态变量。

© www.soinside.com 2019 - 2024. All rights reserved.