Клик по координатам без указания на сам элемент.

Клик по координатам без указания элемента. Есть ли такая возможность, у Selenium? Может где-то есть готовый компонент чтобы сделать это возможным? Пожалуйста приведите пример компонента, с кусочком кода.

Здесь говорят что это невозможно, но возможно вы это смогли решить.

Или возможно есть другие системы для тестирования, веб приложений, с таким же большим функционалом и поддержкой как и Selenium.

Можно попробовать так:

JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("$(document.elementFromPoint(x, y)).click();");

А че нет - берете body и через Actions и Offset кликаете.

Из более-менее достойных альтернатив Selenium я знаю только Sahi.

Достаточно реализовать свою подстановку координат, для клика важна кажется именно getAuxiliary() @return coordinates on the element relative to the top-left corner of the the page. Но лучше реализовать все :smile:

 Coordinates coordinates = new Coordinates() {
         @Override
         public Point onScreen() {
                return new Point(x,y);
         }

        @Override
        public Point inViewPort() {
            return new Point(x,y);
        }

        @Override
        public Point onPage() {
            return new Point(x,y);
        }

        @Override
        public Object getAuxiliary() {
            return String;
        }
    };
    ((HasInputDevices) driver).getMouse().click(coordinates);
1 лайк

А как координаты относительно десктопа считать будете?
У меня есть сомнения, что данный трик работоспособный.
Можно рабочий пример пожалуйста?

если в режиме фулскрин, то можно и десктопа, а вообще у драйвера можно вытащить текущий размер окна

Или имеется ввиду как сами координаты считать? тут уж я точно не знаю )) задача-то неизвестна

Размер окна ничего не даст. Нужно знать куда на десктоп проецируется точка (0,0) страницы (положение окна, рамка окна, тулбары, кэпшен и т.д.).
В общем то до координат дело не доходит - ваш пример дает:

  java.lang.ClassCastException: org.openqa.selenium.Point cannot be cast to java.lang.String
org.openqa.selenium.remote.RemoteMouse.paramsFromCoordinates(RemoteMouse.java:42)
org.openqa.selenium.remote.RemoteMouse.mouseMove(RemoteMouse.java:86)
org.openqa.selenium.remote.RemoteMouse.moveIfNeeded(RemoteMouse.java:51)
org.openqa.selenium.remote.RemoteMouse.click(RemoteMouse.java:56)

виновата, getAuxiliary() не Point а String = id. Вообще используется id последнего объекта к котором скролили в последний раз. здесь нужно думать какой обхект брать и насколько это принципиально на самом деле

Повторю еще раз свой вопрос: вы уверены, что это может работать?

Посмотрите на

https://github.com/SeleniumHQ/selenium/blob/master/java/client/src/org/openqa/selenium/remote/RemoteMouse.java

Я нигде не вижу, что если мы как-нибуть переопределим onPage(), inViewport() это отразится на клике.