循环遍历List以在Selenium中选择元素

时间:2014-06-13 15:01:10

标签: c# selenium selenium-webdriver webdriver

我试图在我正在测试的网站的标题内编写链接页面类。我在下面有以下链接结构

<ul>

    <li><a href="/" title="Home">Home</a></li>
    <li><a href="/AboutUs" title="About Us">About Us</a> </li>
    <li><a href="/Account" title="Account">Account</a></li>
    <li><a href="/Account/Orders" title="Orders">Orders</a></li>
    <li><a href="/AdministrationPortal" title="Administration Portal">Administration Portal</a></li>
</ul>

我想要做的是将这些存储到List中,然后当用户选择其中一个链接时,它将转到他们应该访问的页面。

我已经开始使用以下代码

        List<IWebElement> headerElements = new List<IWebElement>();
        headerElements.Add(WebDriver.FindElement(By.LinkText("Home")));
        headerElements.Add(WebDriver.FindElement(By.LinkText("About Us")));
        headerElements.Add(WebDriver.FindElement(By.LinkText("Account")));
        headerElements.Add(WebDriver.FindElement(By.LinkText("Orders")));
        headerElements.Add(WebDriver.FindElement(By.LinkText("Administration Portal")));
        headerElements.Add(WebDriver.FindElement(By.LinkText("Log in / Register")));
        headerElements.Add(WebDriver.FindElement(By.LinkText("Log off")));

我正在考虑使用for循环来做这件事,这是最好的方法。我试图避免为每个链接编写类似下面的方法

  public void SelectCreateNewReferralLink()
    {
        var selectAboutUsLink = ( new WebDriverWait(WebDriver, new TimeSpan(50))).Until
            (ExpectedConditions.ElementExists(By.CssSelector("#main > a:nth-of-type(1)")));
        selectCreateNewReferralLink.Click();
    }

我使用C#,WebDriver尝试编写此

任何帮助都会很棒

由于

克里斯

1 个答案:

答案 0 :(得分:1)

你可以有一个知道列表根的方法(ul元素)并将标题(字符串或枚举)作为参数。

像(在伪java代码中):

selectLink(String title) {
    driver.findElement(By.cssSelector("ul li a[title='" + title + "']").click();
}