Bonjour à tous,
Grâce à jurassic pork, j'ai découvert Selenium.
Ce que je voudrais faire : je vais sur Google.be et cherche 'Eiffel tower'. Avec le code suivant, j'ai tous les résultats de la première page qui s'inscrivent sue ma feuille excel (c'est pour un contrôle rien de plus). Ce que je cherche, c'est de cliquer sur le lien qui correspond à la première occurrence de britannica dans le href. J'ai essayé avec ceci
et évidemment, il m'ouvre le premier résultat qui n'est pas britannica.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Set Element = robot.FindElementByClass("yuRUbf") Element.FindElementByTag("a").Click
Voici le code complet pour l'instant :
Merci pour toutes les idées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 Public Sub TestChromeSelenium() ' nettoyer les anciennes données Call ClearRow("Eiffel") Dim robot As New WebDriver Dim maRecherche, liens As Object Dim x, y, numPage As Integer Rem robot.AddArgument "--headless" ' pour mettre le navigateur en mode invisible robot.AddArgument "--user-data-dir=d:\temp\selenium" ' pour pointer vers un profile particulier (enregistre les cookies dedans) robot.Timeouts.ImplicitWait = 8000 ' temps max 8 secondes pour les commandes find avant exception robot.Start "chrome", "https://www.google.be" Rem robot.Window.SetSize 640, 480 robot.Window.Maximize robot.Get "/" Set maRecherche = robot.FindElementByName("q") maRecherche.SendKeys "Eiffel tower" robot.FindElementByName("btnK").submit robot.FindElementById "pnnext" ' on attend qu'un élément de la page à afficher soit présent numPage = 1 x = 1 Set liens = robot.FindElementsByXPath("//div[@class='yuRUbf']/a") For Each elem In liens Sheets("Eiffel").Cells(x, 1).Value = elem.Attribute("href") Rem Vérification de la présence du mot If InStr(elem.Attribute("href"), "britannica") > 0 Then Set Element = robot.FindElementByClass("yuRUbf") Element.FindElementByTag("a").Click Exit For End If x = x + 1 Next robot.Wait (5000) ' temporisation de 5 secondes avant de sortir robot.Quit End Sub Sub ClearRow(Sheet As String) With Sheets(Sheet) .Activate If .Range("A1") <> "" Then Plage = .Range("A1").CurrentRegion.Address(False, False) .Range(Plage).Clear Else End If End With End Sub
Partager