Selenium C#如何在类中的动态li id列表中选择一个元素

时间:2012-09-20 19:45:29

标签: c# dynamic-data selenium-webdriver

<ul class="cartItems">
  <li id="ba464302-4733-4a06-80af-44e315d98bc9" class="cartItem">
      <div class="thumbContainer">
           <span class="transferLinks">
     <a href="javascript:;" class="saveForLater">Save for later </a>

  <li id="199e3fff-f80c-4df4-a4ff-26edd804ee5c" class="cartItem">
  <div class="thumbContainer">
           <span class="transferLinks">
    <a href="javascript:;" class="saveForLater">Save for later </a>

我试图选择位于动态“li id”列表中的“saveForLater”类的所有元素(例如:0F347571a5-406c-49da-ac1f-37cf9aa2628b),它位于“ul class”,“cartItems”中“在随附的代码中。我试过以下代码

  1. IWebElement cartItemByXpath = Driver.FindElement(By.XPath("//*[@class='cartItems']/li"));
  2. IWebElement cartItems = Driver.FindElement(By.CssSelector(".cartItems .cartItem .actionLinks .saveForLater"));
  3. 上面第1行只返回cartItems下的所有文字,而不是我要查找的“li id” 上面的第2行将选择saveForLater类,但我仍然需要到列表中其他“li id”下的saveForLater类的其余部分。 “li id”是动态的,并且价值会发生变化。任何意见都将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用Driver.FindElements获取所有匹配的元素列表,然后根据需要遍历列表。

IList<IWebElement> cartItems = Driver.FindElements(By.CssSelector(".cartItems .cartItem .actionLinks .saveForLater"));

foreach (IWebElement cartItem in cartItems ) {
//your action on individual "cartItem"

}

希望这会有所帮助......