我有以下代码:
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']"));
我希望使用循环遍历所有这些元素并打印每个定位器的文本值。但是,我对一般编码和Selenium都很陌生,并没有找到一个不错的方法来做到这一点,而不涉及手动输入locator_[i].Text
的八行代码
任何帮助将不胜感激
答案 0 :(得分: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);
}