2016-07-01 3 views
0

Tor zum Objekt:
Wenn Sie auf einer maßgeschneiderten link drücken Sie auf eine Webseite eingeben, und der Bildschirm wird in einer bestimmten Position befindet, dass Sie den Text „Padding haben - Stenografie Eigenschaft ".Use „Assert.IsTrue“ für die Position in Relation

Das Ziel besteht darin, Assert.IsTrue zu verwenden, dass sich die padding -shorthand-Eigenschaft und ihr Inhalt innerhalb des sichtbaren Computerbildschirms befinden.

Problem:

Ich weiß nicht, ob es möglicherweise, diesen Ansatz zu schaffen mit Selenium mit C#.

Ich weiß nicht, wo ich anfangen soll.

enter image description here

Vielen Dank!

+0

Haben Sie versucht, den Wert der 'Location'-Eigenschaft von' WebElement' zu erhalten? Und vergleichen Sie sie mit den benötigten Koordinaten? – hazevich

+0

noch nicht, habe ich nicht darüber –

Antwort

0

Es gibt keinen guten Weg, dies nur mit Selen zu tun. Wir müssen etwas Javascript mit JavascriptExecutor ausführen. Wir finden das gewünschte Element und übergeben es an IsElementInView(), das einige Javascript-Funktionen aufruft, um die obere/untere/linke/rechte Seite des Elements zurückzugeben und sie mit der Höhe und Breite des Browserfensters zu vergleichen.

  • Wenn top < 0, ist das Element aus dem Bildschirm oben.
  • Wenn bottom > height, ist das Element aus dem Bildschirm unten.
  • Wenn left < 0, ist das Element aus dem Bildschirm links.
  • Wenn right > width, ist das Element aus dem Bildschirm rechts.

Wenn eine der obigen Aussagen zutrifft, ist das Element nicht auf dem Bildschirm. Ansonsten ist das Element auf dem Bildschirm.

class Program 
{ 
    static IWebDriver driver; 

    static void Main(string[] args) 
    { 
     IWebDriver driver = new FirefoxDriver(); 
     driver.Manage().Window.Maximize(); 
     String searchText = "Padding - Shorthand Property"; 
     driver.Navigate().GoToUrl("http://www.w3schools.com/css/css_padding.asp"); 
     IWebElement e = driver.FindElement(By.XPath("//h2[text()=" + searchText + "]")); 
     Console.WriteLine(IsElementInView(e)); 
    } 

    public static Boolean IsElementInView(IWebElement e) 
    { 
     IJavaScriptExecutor jse = (IJavaScriptExecutor)driver; 
     Double top = (Double)jse.ExecuteScript("return arguments[0].getBoundingClientRect().top", e); 
     Double bottom = (Double)jse.ExecuteScript("return arguments[0].getBoundingClientRect().bottom", e); 
     long left = (long)jse.ExecuteScript("return arguments[0].getBoundingClientRect().left", e); 
     long right = (long)jse.ExecuteScript("return arguments[0].getBoundingClientRect().right", e); 
     long width = (long)jse.ExecuteScript("return window.innerWidth"); 
     long height = (long)jse.ExecuteScript("return window.innerHeight"); 
     if (top < 0 || bottom > height || left < 0 || right > width) 
     { 
      return false; 
     } 
     return true; 
    } 
}