Não foi possível retirar o atraso codificado do meu script
Eu escrevi um script em vba em combinação com selênio para analisar todos os nomes de empresas disponíveis em uma página da web. A página da web tem o método de carregamento lento ativo, portanto, apenas 20 links ficam visíveis em cada rolagem. Se eu rolar 2 vezes, o número de links visíveis é 40 e assim por diante. Existem 1000 links disponíveis nessa página da web. Meu script abaixo pode chegar ao final dessa página, manipular todo o pergaminho e buscar todos os nomes disponíveis nessa página da web.
No entanto, é necessário aguardar um certo tempo após cada rolagem para que a página atualize o conteúdo. Aqui é onde eu useihardcoded delay
mas o processo de codificação é muito inconsistente e, às vezes, faz com que o navegador saia antes da conclusão de toda a operação.
Como posso modificar esta parte.Wait 6000
para fazer issoExplicit Wait
ao invés deHardcoded Wait
.
Isto é o que eu escrevi até agora:
Sub Getlinks()
Dim driver As New ChromeDriver, prevlen&, curlen&
Dim posts As Object, post As Object
With driver
.get "http://fortune.com/fortune500/list/"
prevlen = .FindElementsByClass("company-title").Count
Do
prevlen = curlen
.ExecuteScript ("window.scrollTo(0, document.body.scrollHeight);")
.Wait 6000 ''I like to kick out this hardcoded delay and use explicit wait in place
Set posts = .FindElementsByClass("company-title")
curlen = posts.Count
If prevlen = curlen Then Exit Do
Loop
For Each post In posts
R = R + 1: Cells(R, 1) = post.Text
Next post
End With
End Sub