2015-11-03 4 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; 
     } 
} 

Если вы хотите, чтобы нажать на поле ввода вместо замены parentLabel с e.

+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 + '")]")) .Нажмите(); –

Смежные вопросы