2015-11-03 110 views
1

我使用硒,我想根据标签的文字选择标签。以下是我想要选择的html。按文字选择标签

<div class="checkbox"> 
    <fieldset> 

    <label><input type="checkbox" name="category" value="1"/> text1 </label> 

    <label><input type="checkbox" name="category" value="2"/> text2 </label> 

    </fieldset> 
</div> 

我已经试过

IList<IWebElement> element = driver.FindElements(By.Name("category")); 
      foreach (IWebElement ele in element) 
      { 
       if (ele.Text.Contains(my text)) 
       { 
        ele.Click(); 
        break; 
       } 
      } 

但它不选择。如何选择标签?

回答

0

快速一瞥,它似乎是你选择输入框,而不是标签,它的父母。

如果你想选择父母。

IList<IWebElement> element = driver.FindElements(By.Name("category")); 
foreach (IWebElement e in element) 
{ 
     var parentLabel = e.FindElement(By.XPath("..")); 
     if (parentLabel.Text.Contains(my text)) 
     { 
      parentLabel.Click(); 
      break; 
     } 
} 

如果你想点击输入框,而不是与e更换parentLabel

+0

By.XPath(“..”))是什么意思? – Sid

+1

@SidharthJain“..”在xpath中意味着要上一层,在这种情况下转到您的输入元素的父元素,这是标签元素 – drkthng

0
driver.FindElement(By.PartialLinkText("mytext")).Click(); 
+0

页面中出现了多个“mytext”,这就是为什么我无法使用By.PartialLinkText – Sid

+0

driver.FindElement(By.XPath(“// div [@ class ='checkbox'] // label [contains(text(),''+ myText +'”)]“) )。单击(); –