Java Selenium использовать мышь для выбора конкретного текста после ввода текста в текстовое поле? - PullRequest
0 голосов
/ 09 ноября 2018

Можно ли использовать Java selenium для создания выделенного текста с помощью мыши после ввода текста в текстовое поле? (как на картинке ниже)

Я пытался использовать «Действия» или «Робот селена» для выбора, но они, кажется, поддерживают выделение текста только с клавиатуры, а я должен автоматизировать тестовые случаи для приложения, которое требует выделения текста только мышью.

text selection

Я думаю о том, чтобы найти положение курсора в текстовом поле, а затем используйте Robot mouseMove, чтобы сделать выбор. Но все еще застрял в поиске позиции курсора.

    //go to start point of the selection
    Robot robot = new Robot();
    Toolkit.getDefaultToolkit().setLockingKeyState(KeyEvent.VK_NUM_LOCK, false);
    robot.keyPress(KeyEvent.VK_HOME);
    robot.delay(500);
    for (int num = 0; num < Integer.parseInt(startPoint); num++) {
        robot.keyPress(KeyEvent.VK_RIGHT);
        robot.delay(500);
        robot.keyRelease(KeyEvent.VK_RIGHT);
    }
    //find cursor position but this is for mouse position only, not position of my expected cursor in the text field
    PointerInfo a = MouseInfo.getPointerInfo();
    Point b = a.getLocation();
    int x = (int) b.getX();
    int y = (int) b.getY();
    System.out.println(x + "," + y);
    wait(3);
    for (int selection = 0; selection < text.length(); selection++) {
        robot.keyPress(KeyEvent.VK_RIGHT);
        robot.delay(500);
        robot.keyRelease(KeyEvent.VK_RIGHT);
    }
    PointerInfo c = MouseInfo.getPointerInfo();
    Point d = c.getLocation();
    int w = (int) d.getX();
    int z = (int) d.getY();
    System.out.println(w + "," + z);
    // move mouse point from the start point to end point of selection
    robot.mouseMove(x + 12, y);
    robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
    robot.delay(500);
    robot.mouseMove(w - 12, z);
    robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
    robot.delay(500);

Есть предложения?

...