web-dev-qa-db-fra.com

Comment cliquer sur une position spécifique d'un élément Web dans le sélénium?

Je travaille sur l'automatisation du lecteur vidéo. J'ai des difficultés à cliquer à la fin de la barre de progression du lecteur vidéo.
Prenons un exemple de vidéo youtube. avec l'aide de xpath, j'ai pu découvrir l'élément de la barre de progression vidéo. Maintenant, je voulais cliquer à la fin de la vidéo.

j'ai essayé d'utiliser moveToElement (ele, xOffset, yOffff) . Mais je ne peux pas avoir de décalage statique ici car la taille du lecteur vidéo dépend de la taille de la fenêtre du navigateur. J'ai essayé d'obtenir la taille d'un élément Web et de l'utiliser comme xoffset, mais cela ne semblait pas fonctionner. moveToElement (ele, ele.getRect (). getWidth () - 10, yOffff) . Des suggestions ici sur la façon de réaliser ceci?

4
user2649233

Essayez ce code. J'ai essayé sur Chrome 54 avec webdriver 2.53 sur Windows 8. Ne touchez pas la souris pendant le test, ni mieux, déplacez le curseur en dehors de la plage de l'écran au début du test. 

   WebElement elem = driver.findElement(By.className("ytp-progress-bar"));

    int width = elem.getSize().getWidth();

    Actions act = new Actions(driver);
    act.moveToElement(elem).moveByOffset((width/2)-2, 0).click().perform();

Vous pouvez déterminer le décalage entre les nombreux attributs de la division 'ytp-progress-bar'. Vous n'avez pas besoin de trouver la largeur, etc.

Vous devez d'abord accéder à la barre de progression, car elle disparaît après 2-3 secondes en raison d'une inactivité sur l'écran vidéo.

10
Grasshopper

Pour obtenir l'emplacement exact à cliquer sur une page, il existe un add-on gratuit pour Firefox qui peut vous aider à atteindre cette précision. Cela s'appelle 'MeasureIt'. Avec cela, vous pouvez mesurer les distances verticales et horizontales exactes sur lesquelles vous souhaitez cliquer.

0
user7123229

Parfois, Selenium ne suffit pas et vous devez utiliser Javascript et JQuery. Je ne suis pas un développeur Java, mais le code en C # ressemblerait à ceci:

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("Your Script");

Il y aura plus d'aide avec JQuery. J'espère que j'ai pu vous aider. 

0
Dlyx