1
votes

Powershell avec Selenium: je ne parviens pas à faire fonctionner le "scroll into view"

Je dois faire défiler la page jusqu'au bouton SUIVANT . Seul le bouton SUIVANT est visible sur lequel il est possible de cliquer. Je dois donc afficher le défilement pour qu'il fonctionne.

$browser = Start-SeChrome
$browser.Navigate().GoToURL($url)

ForEach ($A_Element in (Find-SeElement -Driver $browser -TagName a))      
   { 
    If ($A_Element.Text -Notlike "Next"){Conitnue} 
    $A_Element.ScrollIntoView()
    #Invoke-SeClick -Element $A_Element       
    #$A_Element.Click() 
    sleep 2
    Break         
   }


0 commentaires

3 Réponses :


0
votes

Vous pouvez essayer d'exécuter le code javascript pour le défilement:

 ((IJavaScriptExecutor)driver).ExecuteScript("document.querySelector(arguments[0]).scrollIntoView();", A_Element);

exécutez ce code js sur votre élément. En c #, cela ressemble à ceci:

    document.scrollIntoView();


1 commentaires

document.scrollIntoView () ne fonctionne pas. Dans tous les cas, le document n'est pas défini et il ne fait pas référence à la position à atteindre. L'autre commande que vous avez publiée est une commande C #. Je recherche de l'aide sur Powershell, pas sur c #



0
votes

J'ai peur qu'il y ait quelque chose qui s'appelle ScrollIntoView pour PowerShell. Cependant, il existe des moyens de faire défiler vers le bas. Vous pouvez utiliser l'une des deux méthodes ci-dessous:

Pour appuyer 10 fois sur la flèche vers le bas:

[int]$horizontalLoc=0
[int]$verticalLoc= 90
browser.Document.parentWindow.scroll($horizontalLoc,$verticalLoc)

Pour faire défiler jusqu'à un emplacement particulier:

[System.Windows.Forms.SendKeys]::SendWait({{DOWN 10}})


2 commentaires

J'ai dû charger "[void] [System.Reflection.Assembly] :: LoadWithPartialName (" System.Wi‌ ndows.Forms ")" puis j'ai exécuté "[System.Windows.Forms.SendKeys] :: SendWait ({{DOWN 10}}) "mais la page Chrome ne défile PAS. Pour la commande "$ browser.Document.parentWindow.scrollto ($ horizontalLoc, $ ver‌ ticalLoc)" j'obtiens une erreur "Vous ne pouvez pas appeler une méthode sur une expression de valeur nulle"


Votre page peut-elle défiler? essayez également une fois browser.parentwindow.scroll (0, $ oIE.document.body.scrollHeight), il défilera jusqu'en bas de page.



1
votes

En fonction de la conception de votre page Web, vous pouvez essayer d'exécuter du code JavaScript dans votre code PowerShell en essayant ceci:

$browser.ExecuteScript("document.scrollTo($($A_Element.Location.X),$($A_Element.Location.Y))")

Vous pouvez essayer quelque chose comme:

$browser.ExecuteScript("javascript code goes here").


0 commentaires