循环遍历List以选择Selenium中的Element

本文关键字:Selenium 中的 Element 选择 遍历 List 循环 | 更新日期: 2023-09-27 18:08:35

我正试图为我正在测试的网站的标题内的链接写一个页面类。我在

下面有以下链接结构
<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<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试图写这个

任何帮助都将是伟大的

感谢克里斯

循环遍历List以选择Selenium中的Element

可以有一个方法,它知道列表的根(ul元素),并接受标题(字符串或enum)作为参数。

类似于(在伪java代码中):

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