J'utilise actuellement sélénium webdriver pour analyser la page d'amis de Facebook et extraire tous les identifiants du script AJAX. Mais j'ai besoin de faire défiler vers le bas pour obtenir tous les amis. Comment puis-je faire défiler vers le bas dans Selenium. J'utilise python.
python
selenium
selenium-webdriver
automated-tests
user2523364
la source
la source
Réponses:
Vous pouvez utiliser
où Y est la hauteur (sur un moniteur fullhd, c'est 1080). (Merci à @lukeis)
Vous pouvez aussi utiliser
pour faire défiler vers le bas de la page.
Si vous voulez faire défiler jusqu'à une page avec un chargement infini , comme celles des réseaux sociaux, Facebook etc. (merci à @Cuong Tran)
une autre méthode (grâce à Juanse) est, sélectionnez un objet et
la source
scrollHeight
, qu'est-ce que cela signifie et comment ça marche en général?Si vous souhaitez faire défiler vers le bas de la page infinie (comme linkedin.com ), vous pouvez utiliser ce code:
Référence: https://stackoverflow.com/a/28928684/1316860
la source
SCROLL_PAUSE_TIME
varie, cela prend environ 2 secondes pour moi.Vous pouvez utiliser
send_keys
pour simuler une pression sur une toucheEND
(ouPAGE_DOWN
) (qui fait normalement défiler la page):la source
même méthode que celle illustrée ici :
en python, vous pouvez simplement utiliser
(Y est la position verticale vers laquelle vous voulez faire défiler)
la source
cela m'a aidé lorsque j'essayais d'accéder à un «li» qui n'était pas visible.
la source
location_once_scrolled_into_view
devrait être appelé sans()
est quelocation_once_scrolled_into_view
c'est un Pythonproperty
. voir le code source ici: selenium / webelement.py à d3b6ad006bd7dbee59f8539d81cee4f06bd81d64 · SeleniumHQ / séléniumDans mon but, je voulais faire défiler plus vers le bas, en gardant à l'esprit la position des fenêtres. Ma solution était similaire et utilisée
window.scrollY
qui ira à la position de défilement y actuelle + 200
la source
Voici comment vous faites défiler la page Web:
la source
Le moyen le plus simple que j'ai trouvé pour résoudre ce problème était de sélectionner une étiquette, puis d'envoyer:
Esperons que ça marche!
la source
Aucune de ces réponses n'a fonctionné pour moi, du moins pas pour faire défiler une page de résultats de recherche Facebook, mais j'ai trouvé après de nombreux tests cette solution:
la source
SCROLL_PAUSE_TIME
dans stackoverflow.com/a/27760083/7326714 pour2
, cela fonctionne très bien et vous faites défiler vers le bas un 100x plus rapide.Lorsque vous travaillez avec youtube, les éléments flottants donnent la valeur "0" comme hauteur de défilement, donc plutôt que d'utiliser "return document.body.scrollHeight" essayez d'utiliser celui-ci "return document.documentElement.scrollHeight" ajustez le temps de pause du défilement selon votre Internet vitesse sinon, il ne fonctionnera qu'une seule fois, puis se cassera après cela.
la source
Je cherchais un moyen de faire défiler une page Web dynamique, et de m'arrêter automatiquement une fois que la fin de la page est atteinte, et j'ai trouvé ce fil.
Le message de @Cuong Tran , avec une modification principale, était la réponse que je recherchais. J'ai pensé que d'autres pourraient trouver la modification utile (elle a un effet prononcé sur le fonctionnement du code), d'où cet article.
La modification consiste à déplacer l'instruction qui capture la dernière hauteur de page à l' intérieur de la boucle (de sorte que chaque vérification soit comparée à la hauteur de page précédente).
Donc, le code ci-dessous:
(Il y a une autre modification, où l'instruction break est à l'intérieur d'une autre condition (au cas où la page «colle») qui peut être supprimée).
la source
Ce code défile vers le bas mais ne nécessite pas d'attendre à chaque fois. Il défilera continuellement, puis s'arrêtera en bas (ou expiration du délai)
C'est beaucoup plus rapide que d'attendre 0,5 à 3 secondes à chaque fois pour une réponse, lorsque cette réponse peut prendre 0,1 seconde
la source
faire défiler les pages de chargement. Exemple: medium, quora, etc.
la source
si vous souhaitez faire défiler une vue / un cadre particulier (WebElement), il vous suffit de remplacer "corps" par un élément particulier dans lequel vous avez l'intention de faire défiler. j'obtiens cet élément via "getElementById" dans l'exemple ci-dessous:
c'est le cas sur YouTube , par exemple ...
la source
La
ScrollTo()
fonction ne fonctionne plus. C'est ce que j'ai utilisé et cela a bien fonctionné.la source
ça marche pour mon cas.
la source