2017-03-26 4 views
0

Ich versuche, eine einfache Automatisierung Skript in C# erstellen, die dann Google-Homepage geladen werden kann, etwas in das Suchfeld eingeben, Ergebnisliste und klicken Sie dann auf Klicken Sie auf den Link "Bilder" und zeigen Sie mögliche Bilder des gesuchten Objekts an.OpenQA.Selenium.ElementNotVisibleException‘in WebDriver.dll bei dem Versuch, auf den Link zu klicken

Ich konnte zu dem Punkt gelangen, wenn Selenium Webdriver in der Lage ist, den Link Bilder von LinkText zu finden, aber wenn ich eine Click() -Operation ausführen möchte, bekomme ich Fehlermeldung Exception geworfen: 'OpenQA.Selenium.ElementNotVisibleException' in WebDriver.dll und ich kann mich nicht weiter bewegen.

Ich lege meinen Code unten.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

using OpenQA.Selenium; 
using OpenQA.Selenium.Firefox; 

namespace WebDriverDemo 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      IWebDriver driver = new FirefoxDriver(); 
      driver.Url = "http://www.google.com"; 

      var searchBox = driver.FindElement(By.Id("lst-ib")); 
      searchBox.SendKeys("apple"); 
      searchBox.SendKeys(Keys.Enter); 

      driver.Manage().Timeouts().ImplicitWait = (TimeSpan.FromSeconds(10)); 


      try 
      { 
       var imageLink = driver.FindElement(By.LinkText("Images")); 
       Console.Write("Element found by a LinkText"); 
       imageLink.Click(); 
      } 
      catch(Exception e) 
      { 
       Console.WriteLine(e); 
      } 
      Console.Read(); 

     } 
    } 
} 

Ich freue mich auf Ihr Feedback und mögliche Lösungen :)

Mit freundlichen Grüßen und vielen Dank,

Antwort

0

Sie brauchen nur eine kurze Pause nach dem für die Bilder zu warten, die Suche klickbaren Link zu sein.

Driver.FindElement(By.Id("lst-ib")).SendKeys("apple\n"); 
new WebDriverWait(Driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.LinkText("Images"))).Click(); 

Sie können aber auch \n, senden, die ein Wagenrücklauf ist, als Teil der Zeichenfolge.

-1

Ich habe keine Ahnung, warum es so: | Nach dem Versuch, verschiedene "Wartetypen" zu testen, scheint nur 1 zu funktionieren:

Thread.Sleep (2000);

Hoffe das hilft für jetzt. Ich suche immer noch nach einer besseren Problemumgehung.

0

Sorry für eine lange Verzögerung, jedoch war ich in der Lage, das Problem selbst zu lösen. Anstelle von driver.FindElement (By.LinkText ("Images")) habe ich den Xpath verwendet, um mir den genauen Standort des Bildlinks anzuzeigen :)

Vielen Dank für die Unterstützung!

Verwandte Themen