Я использую Selenium WebDriver в сочетании с java.awt.Robot, чтобы лучше имитировать взаимодействие пользователя с нашим веб-приложением. Да, я знаю, что это, вероятно, не нужно, но клиенты, которых я обслуживаю, требуют этого.
В настоящее время все работает очень хорошо, однако у меня есть небольшая ошибка, поскольку я не могу найти хороший способ получить элементы веб-элементов на экране. Такие вещи, как строка заголовка, панель меню, панель навигации и т.д., Все нажимают содержимое вниз на физическом экране (откуда робот получает свои координаты), но не влияют на то, где Selenium сообщает об этом элементе.
Когда я вызываю: element.getLocation();
в Selenium WebElement, он всегда дает мне свое местоположение относительно области визуализации содержимого HTML, а не самого окна браузера.
Лучшая иллюстрация: driver.findElement(By.tagName("body")).getLocation();
всегда возвращает 0,0, независимо от фактического местоположения окна на экране.
Сейчас я взламываю его, добавляя вертикальное и горизонтальное смещение после максимизации окна, но это не то же самое между разными браузерами (например, верхние украшения IE занимают больше места, чем Firefox), и могут быть разными для каждого пользователя, если у них есть панели инструментов закладки, строки поиска и т.д. добавлены.
Да, я знаю, что могу работать в полноэкранном режиме, но я бы предпочел, если это вообще возможно.
Есть ли способ использовать WebDriver для надежного физического размещения элементов на экране?