Селен: Как отстаивать все флажки отмеченные? - PullRequest
2 голосов
/ 18 мая 2011
Decimal totalCheckboxes = selenium.GetXpathCount("//input[@type='checkbox']");
  for (int i = 1; i < totalCheckboxes + 1; i++) 
        {
            // Assert attempt 1
            //Assert.IsTrue(selenium.IsChecked("/descendant-or-self::input[@type='checkbox'][" + i + "]"));

            // Assert attempt 2
            //Assert.IsTrue(selenium.IsChecked("//input[@type='checkbox'][" + i + "]")); 
        }

Мне нужно установить несколько флажков. Количество флажков не всегда фиксировано, поскольку они зависят от моих критериев поиска. Кроме того, флажки имеют разные идентификатор и имя. Например, для первого флажка, id = "ctl07_ctl01_ctl01_cbxRepeater_e5962e80-ca07-42e3-908f-1217ef5787d4" name = "ctl07 $ ctl01 $ ctl01 $ cbxRepeater_e5962e80-ca07-87f4 * 87-87f4303-883

и для второго флажка: id = "ctl07_ctl01_ctl03_cbxRepeater_c094f428-7ead-4ded-a11b-5824be49a95b" name = "ctl07 $ ctl01 $ ctl03 $ cbxRepeater_c094f428-7eb4 584

и т. Д. Для следующих флажков.

Я пробовал несколько вещей, чтобы добавить утверждение, чтобы установить флажки (флажок «Утверждение 1» и «Утверждение 2» выше), но когда я запускаю тест, он все равно не проходит в этот момент. Я получаю ошибку:

Selenium.SeleniumException: ERROR: Element /descendant-or-self::input[@type='checkbox'][1] not found
Selenium.SeleniumException: ERROR: Element //input[@type='checkbox'][2] not found

Любая помощь по этому вопросу будет принята с благодарностью. Заранее спасибо!

1 Ответ

2 голосов
/ 18 мая 2011

Попробуйте:

Assert.IsTrue(selenium.IsChecked("xpath=(//input[@type='checkbox'])[" + i + "]")); 

Обратите внимание на добавление ().

() говорит, оцените меня первым (как и следовало ожидать). Это позволяет вам (...)[1] найти первый элемент xpath, оцененный в ().

...