2017-05-24 49 views
0

的迭代,我有以下代碼:如何通過一些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']")); 

而且我希望用一個遍歷所有這些元素進行迭代並打印出每個定位器的文本值。不過,我是相當新的一般和硒尤其是編碼,並沒有發現一個體面的方式來做到這一點,不涉及手動輸入八行的locator_[i].Text 代碼的任何幫助,將不勝感激

回答

0

爲了要遍歷這些定位器,您需要將它們添加到可迭代的數據結構中。數組,列表等...

如果知道要拔出的位置數,則可以使用數組,否則使用列表。

使用列表的一個簡單的例子:

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); 
}