hello,
tu devrais essayer d'utiliser
Selenium. Les avantages sont multiples :
Il utilise l'explorateur de ton choix ( google chrome, firefox, edgechromium).
Il est optimisé pour l'automatisation des explorateurs.
Pour l'utiliser dans windev 2 solutions :
1 - Avec
Selenium Basic (objet COM activeX)
2 - Avec un assemblage dotnet comme par exemple
Selenium.Webdriver
Voici par exemple comment utiliser l'assemblage
Selenium.WebDriver pour utiliser Selenium dans Windev avec Chrome.
1 - Télécharger la version
3.141.0 de
Selenium.webdriver ici
2 - Extraire du fichier nupkg (par 7zip par exemple) le fichier
lib/net40/WebDriver.dll
3 - Télécharger la version
3.141.0 de
Selenium.support ici
4 - Extraire du fichier nupkg (par 7zip par exemple) le fichier
lib/net40/WebDriver.Support.dll
5 - Inclure les deux assemblages dotnet dans son projet.
6 - Télécharger le driver chrome (chromedriver.exe)
ici qui correspond à la version du chrome installé sur son PC. Par exemple si cette version est la 89, télécharger le fichier
chromedriver_win32.zip correspondant et extraire
chromedriver.exe et le mettre dans le chemin de l'exe de son projet.
et voici un exemple de code qui ouvre chrome et charge la page du forum Windev PCSOFT. Puis on lit les titres des sujets et on les affiche dans une fenêtre trace. Ensuite on prend le 5ème sujet et on l'affiche puis on prend une capture d'écran de cette page. Enfin on ferme le navigateur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
// J.P utilisation de selenium par dotnet dans Windev
optionsChrome est un ChromeOptions()
optionsChrome.AddArgument("start-maximized")
// répertoire pour le cache et les cookies
optionsChrome.AddArgument("user-data-dir=d:\temp\chromeWindev")
robot est un ChromeDriver(optionsChrome)
elem est un "OpenQA.Selenium".IWebElement dynamique
// on met le temps d'attente implicite à 8 secondes maximum
robot.Manage():Timeouts():ImplicitWait = TimeSpan.FromSeconds(8)
robot.Navigate():GoToUrl("https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/page/1.awp")
// on sélectionne tous les éléments de la page ayant un tag td de classe l-19
POUR TOUT elem DE robot.FindElementsByXPath("//td[@class='l-19']")
Trace(elem.GetAttribute("textContent"))
FIN
// on sélectionne le 5ème élément (pas celui de L.Besson) de la page ayant un tag td de classe l-19 et un tag a (lien)
//// et on clique dessus
robot.FindElementsByXPath("//td[@class='l-19']/a"):get_Item(5):Click()
// on prend une copie d'écran de la page affichée
robot.GetScreenshot():SaveAsFile("D://Temp/ForumWindevElem5.jpg", ScreenshotImageFormat.Jpeg)
//// on attend 10 secondes avant de terminer
Multitâche(-1000)
// on arrête chrome et le driver
robot.quit() |
résultats :
Ami calmant, J.P
Partager