2017-05-24 2 views
0

Ich habe den folgenden Code iterieren:Wie durch eine Reihe von IWedElements

IWebDriver driver = new ChromeDriver(); 
driver.Navigate().GoToUrl(some url); 

IWebElement locator_1 = driver.FindElement(By.Id("locator_id")); 
IWebElement locator_2 = driver.FindElement(By.Name("locator_name")); 
IWebElement locator_3 = driver.FindElement(By.TagName("p")); 
IWebElement locator_4 = driver.FindElement(By.ClassName("locator_class")); 
IWebElement locator_5 = driver.FindElement(By.LinkText("myLocator(5)")); 
IWebElement locator_6 = driver.FindElement(By.PartialLinkText("locator (6)")); 
IWebElement locator_7 = driver.FindElement(By.CssSelector("input[myname='selenium']")); 
IWebElement locator_8 = driver.FindElement(By.XPath("//button[@class='btn btn-2']")); 

Und ich wünsche eine Schleife verwenden, um durch alle diese Elemente iterieren und den Textwert eines jeden Locator drucken. Allerdings bin ich ziemlich neu im Allgemeinen und Selen insbesondere Codierung und haben nicht eine anständige Art und Weise zu tun, es gefunden, die nicht manuell eingeben beinhalten acht Zeilen von Codes von locator_[i].Text Jede Hilfe würde geschätzt

Antwort

0

Um Um diese Lokatoren zu durchlaufen, müssen Sie sie zu einer iterierbaren Datenstruktur hinzufügen. Ein Array, eine Liste, usw.

Wenn Sie die Anzahl der Standorte kennen, die Sie herausziehen, können Sie ein Array verwenden, ansonsten verwenden Sie eine Liste.

Ein schnelles Beispiel für eine Liste mit:

IWebDriver driver = new ChromeDriver(); 
driver.Navigate().GoToUrl(some url); 
var locators = new List<IWebElement() 
{ 
    driver.FindElement(By.Id("locator_id")), 
    driver.FindElement(By.Name("locator_name")), 
    driver.FindElement(By.TagName("p")), 
    driver.FindElement(By.ClassName("locator_class")), 
    driver.FindElement(By.LinkText("myLocator(5)")), 
    driver.FindElement(By.PartialLinkText("locator (6)")), 
    driver.FindElement(By.CssSelector("input[myname='selenium']")), 
    driver.FindElement(By.XPath("//button[@class='btn btn-2']")) 
}; 

foreach (var locator in locators) 
{ 
    // Print out the value of text however you want, I'm using the Console because I'm not sure what your preference is 
    Console.WriteLine(locator.text); 
} 
Verwandte Themen