Осложнения с методом Selenium GetAttribute

Недавно я попытался использовать метод Selenium RC GetAttribute , но тут же наткнулся на вызов. Я попытался выполнить очень простой selenium.GetAttribute ("// a / @ href") , но код вызвал исключение SeleniumException с сообщением "ОШИБКА: не удалось найти атрибут элемента: // a / @ href ". Подставив selenium.GetText ("// a [@href]") вместо вызова GetAttribute , я подтвердил, что элемент определенно присутствует, поскольку этот оператор правильно вернул текст ссылки.

Затем я попробовал:

  • указание на другую веб-страницу с другим протоколом (file: /// vs http: //) - та же проблема.
  • с использованием другого локатора xpath указывает на другой атрибут - та же проблема.
  • с использованием DOM-локатора selenium.GetAttribute ("document.getElementsByTagName ('a') [0] .getAttribute ('href')") - та же проблема; немного другое сообщение об ошибке (и в сообщении об ошибке отсутствует последняя скобка): «ОШИБКА: элемент document.getElementsByTagName ('a') [0] .getAttribute ('href' not found» . Обратите внимание, что это точное выражение правильно работает в консоли Firebug.
  • с использованием абсолютной адресации вместо относительной xpath с selenium.GetText ("xpath = / html / body / a [@href]") для подтверждения существование, а затем selenium.GetAttribute ("xpath = / html / body / a / @ href") , чтобы получить атрибут - и это сработало!

Хотя в руководстве четко указано, что относительные локаторы xpath не нуждаются в явном типе локатора (т. е. префиксе «xpath =»), о абсолютных локаторах xpath ничего не говорится; Я так понимаю, что приставка обязательна. Но из любопытства я вернулся к своему относительному выражению и добавил явный префикс - изменение selenium.GetAttribute ("// a / @ href") на selenium.GetAttribute (" г. GetText) нет?

  • Почему локатор DOM завершился с ошибкой «не найден»? (В руководстве также четко указано, что локаторы DOM не требуют явного префикса типа локатора, но я, тем не менее, попытался добавить «dom =» в качестве префикса в тесте DOM; это все равно не удалось.)
  • Почему не работает ли Selenium IDE более изящно при попытке выделить (найти) атрибут? С тем же локатором "xpath = // a / @ href" нажатие кнопки «Найти» приводит к уродливому сообщению: «[error] locator not found: xpath = // a / @ href, error = [ Исключение ... "Не удалось преобразовать аргумент JavaScript arg 0 [inIFlasher.scrollElementIntoView]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: chrome: //selenium-ide/content/selenium-runner.js :: showElement :: строка 386 "data: no]"
  • Ваш ввод также запрашивается для следующего: Шаблон, который я хотел для каждого теста здесь, был (A) GetText ( locator-for-element-with -attribute ) для подтверждения наличия элемента, затем (B) GetAttribute ( локатор-для-самого-атрибута ). Из 6 слотов в таблице ниже я успешно решил 3 из них, как только что было подробно описано, а 4-й кажется ошибкой. Существуют ли решения для оставшихся двух слотов?

    Type    GetText       GetAttribute
    XPath   //a[@href]    xpath=//a/@href
    CSS     css=a[href]   ??
    DOM     ??            document.getElementsByTagName('a')[0].getAttribute('href')
    

    (Подробнее: Selenium RC версии 1.0.3, браузер: Firefox 3.6.13, мой целевой код на C #)

    5
    задан Michael Sorens 2 March 2011 в 18:17
    поделиться