Atualmente, estou usando o selenium webdriver para analisar a página de amigos do usuário do Facebook e extrair todos os IDs do script AJAX. Mas preciso rolar para baixo para conseguir todos os amigos. Como posso rolar para baixo no Selenium. Eu estou usando python.
python
selenium
selenium-webdriver
automated-tests
user2523364
fonte
fonte
Respostas:
Você pode usar
onde Y é a altura (em um monitor fullhd é 1080). (Graças a @lukeis)
Você também pode usar
para rolar até o final da página.
Se você quiser rolar para uma página com carregamento infinito , como os de redes sociais, facebook etc. (graças a @Cuong Tran)
outro método (graças a Juanse) é, selecione um objeto e
fonte
scrollHeight
o que isso significa e como funciona em geral?Se você quiser rolar para a parte inferior da página infinita (como linkedin.com ), use este código:
Referência: https://stackoverflow.com/a/28928684/1316860
fonte
SCROLL_PAUSE_TIME
varia, leva cerca de 2 segundos para mim.Você pode usar
send_keys
para simular um pressionamento de teclaEND
(ouPAGE_DOWN
) (que normalmente rola a página):fonte
mesmo método como mostrado aqui :
em python, você pode simplesmente usar
(Y é a posição vertical na qual você deseja rolar)
fonte
isso ajudou quando eu estava tentando acessar um 'li' que não era visível.
fonte
location_once_scrolled_into_view
deve ser chamado de sem()
é quelocation_once_scrolled_into_view
é um Pythonproperty
. veja o código-fonte aqui: selenium / webelement.py em d3b6ad006bd7dbee59f8539d81cee4f06bd81d64 · SelenHQ / selênioPara o meu propósito, eu queria rolar mais para baixo, mantendo a posição das janelas em mente. Minha solução foi semelhante e usada
window.scrollY
que irá para a posição atual de rolagem y + 200
fonte
É assim que você rola a página da Web:
fonte
A maneira mais fácil de solucionar esse problema foi selecionar um rótulo e enviar:
Espero que funcione!
fonte
Nenhuma dessas respostas funcionou para mim, pelo menos não para rolar uma página de resultados de pesquisa do Facebook, mas descobri depois de muito teste esta solução:
fonte
SCROLL_PAUSE_TIME
em stackoverflow.com/a/27760083/7326714 para2
, ele funciona muito bem e você rolar para baixo a 100x mais rápido.Ao trabalhar com o youtube, os elementos flutuantes fornecem o valor "0" como a altura da rolagem, em vez de usar "return document.body.scrollHeight", tente usar este "return document.documentElement.scrollHeight" para ajustar o tempo de pausa da rolagem conforme sua Internet velocidade, caso contrário, ele será executado apenas uma vez e depois será interrompido.
fonte
Eu estava procurando uma maneira de percorrer uma página da web dinâmica e parar automaticamente assim que o final da página fosse alcançado e encontrei este tópico.
O post de @Cuong Tran , com uma modificação principal, foi a resposta que eu estava procurando. Eu pensei que outros pudessem achar a modificação útil (ela tem um efeito pronunciado sobre como o código funciona), por isso neste post.
A modificação é mover a instrução que captura a última altura da página dentro do loop (para que cada verificação seja comparada à altura da página anterior).
Então, o código abaixo:
(Há outra modificação, em que a instrução break está dentro de outra condição (caso a página 'fique') que pode ser removida).
fonte
Esse código rola até o final, mas não exige que você espere cada vez. Ele rolará continuamente e depois parará na parte inferior (ou tempo limite)
Isso é muito mais rápido do que esperar 0,5 a 3 segundos cada vez por uma resposta, quando essa resposta pode levar 0,1 segundos
fonte
rolar páginas de carregamento. Exemplo: médio, quora, etc
fonte
se você quiser rolar dentro de uma exibição / quadro específica (WebElement), o que você precisa fazer é substituir "corpo" por um elemento específico no qual você deseja rolar. eu recebo esse elemento via "getElementById" no exemplo abaixo:
é o caso do YouTube , por exemplo ...
fonte
A
ScrollTo()
função não funciona mais. Isto é o que eu usei e funcionou bem.fonte
está funcionando para o meu caso.
fonte