J'ai un simple bouton d'envoi sur une page pour lequel je dois envoyer un clic mais ce bouton est en bas de la page et n'apparaît que si un utilisateur utilise la barre de défilement verticale du navigateur pour l'atteindre !!

Donc, lorsque j'utilise ce code C #, je reçois l'élément d'erreur n'est pas visible, comment puis-je résoudre ce problème?

driver.FindElement(By.Id("submit")).Click();
0
zac 25 janv. 2017 à 00:48

4 réponses

Meilleure réponse

J'ai trouvé le problème il y a deux éléments dans la page avec id = "submit" !! J'ai utilisé Name et maintenant ça marche bien, merci à tous.

0
Wel 24 janv. 2017 à 23:58

S'il n'est pas visible par vous, il n'est pas rendu par le navigateur utilisé via votre pilote sélénium.
Je vous recommande de simuler un défilement pour vous assurer que votre objet sera visible, ou de faire une simulation sur une résolution plus grande?
Finalement, vous pouvez envisager de passer à un pilote sans tête ...

0
Jeremy L 24 janv. 2017 à 21:55

Selenium Webdriver fait défiler implicitement jusqu'à l'élément, s'il est visible. Vous pouvez attendre la visibilité de l'élément puis effectuer l'opération de clic. En Java, nous pouvons attendre la visibilité en utilisant le code suivant:

WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.visibilityOfElementLocated(driver.findElement(By.id("submit"))));

Dans le code ci-dessus, Webdriver attendra 60 secondes pour que l'élément requis devienne visible. Si dans les 60 secondes, l'élément n'apparaît pas, il échouera avec une erreur de temporisation. Une fois que l'élément requis est visible, il peut être cliqué.

1
Mahipal 24 janv. 2017 à 23:02

Vous pouvez faire défiler vers le bas en utilisant javascript. Quelque chose comme ça devrait faire le travail.

((JavascriptExecutor) driver).executeScript("window.scrollTo(0, document.body.scrollHeight)");
1
acikojevic 24 janv. 2017 à 22:55