2017-12-28 19 views
0

Was sollte das Programm tun? Klicken Sie auf jede Schaltfläche auf der Website.Selen C# Scrollen und Klicken - Webelement

enter image description here

By bybut = By.XPath("//span[@class='Button']"); 

var element = driver.FindElement(bybut); 

IJavaScriptExecutor js = driver as IJavaScriptExecutor; 

for (int i = 0; i < 99; i++) 
{ 
    // Scroll element into view (orange rectangle on my picture) 
    js.ExecuteScript("arguments[0].scrollIntoView(true);", element); 

    // Time for scrolling 
    System.Threading.Thread.Sleep(2000); 

    // Click on Button 
    driver.FindElement(By.XPath("//span[@class='Button']")).Click(); 
} 

Auf der Internet-Seite, wenn Sie auf die Schaltfläche klicken, wird es entfernt werden.

Mein Problem: Wenn die For-Schleife wiederholt, kommt es zu einem Fehler, weil die nächste Schaltfläche bereits in meinem View-Frame ist. Wie kann ich prüfen, ob eine Schaltfläche bereits sichtbar ist?

Haben Sie andere Lösungen? Danke im Voraus!

Antwort

1

können Sie unter Code versuchen: _

IJavaScriptExecutor js = driver as IJavaScriptExecutor; 

    List<WebElement> displayedOptions = driver.FindElements(//span[@class='Button']); 

    for (WebElement option : displayedOptions) 
    { 
    try{ 

    js.ExecuteScript("arguments[0].scrollIntoView(true);", option); 

    System.Threading.Thread.Sleep(2000); 

     // Click on Button 
     driver.FindElement(By.XPath("//span[@class='Button']")).Click(); 


    }catch(WebException E){ 


    } 
+0

OpenQA.Selenium.ElementNotVisibleException: "Element nicht sichtbar" – Paski7

+0

ich meinen Code ein wenig überarbeitet und jetzt funktioniert es! Danke für Ihre Hilfe! – Paski7

Verwandte Themen