Tenho uma aplicação que simula a navegação do usuario em uma pagina utilizando a classe Robot + Selenium. Consigo simular o uso do mouse normalmente para achar e clicar nos links. O problema acontece quando o link que eu quero não está visivel na tela.
Exemplo, preciso clicar em um link que está no final da página.
WebElement e = driver.findElement(By.id("id"));
Robot robot = new Robot();
robot.mouseMove((int) e.getLocation().getX(), (int) e.getLocation().getY());
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
Isso funciona perfeitamente quando o elemento está visivel para o usuario, mas se ele está no finalda pagina
por exemplo e preciso usar o scroll pra rolar até o final da pagina, não da certo,
Minha dúvida é, existe alguma maneira de pegar a posição relativa do elemento quando ele estiver visivel?
Eu vou rolando a barra de rolagem até achar o elemento, mas quando mando clicar, a posição que tenho dele
não é a posição que ele está naquele momento e sim a posição em relação ao documento inteiro.
Olha eu nao conheço bem essa Selenium, mas o que eu faria é o seguinte, pega o tamanho da pagina e compara com a posição do elemento, se a posição do elemento for maior que o tamanho da pagina é porque ele esta para baixo. entao com alguns calculos voce sabe quanto tem que rolar para baixo e voce subtrai do valor da posição e acha a nova posição. Não sei se ficou claro
Pra navegar eu estou usando c classe Robot do Java, eu posso tanto navegar simulando o “page Down” do teclado qnto posso navegar simulando o scroll do mouse. O que eu to agarrando é esse calculo, cada “page Down” que eu dou ou cada scroll que eu rolo, eu não sei qnto eu teria q subtrair da coordenada Y do link que quero clicar.
Não conheço esse Robot, mas pelo menos puramente pelo webdriver, o Selenium consegue sim acessar elementos HTML independentes da rolagem, portanto que já estejam carregados e visíveis lá embaixo, senão seria teste falso tentar acessar algo que de fato não está carregado para o usuário final, alguma ação deveria ser feita antes.
Nesse exemplo consegue acessar o link “BROWSE TEMPLATES” que está no final da página: