Возникли проблемы при использовании Capybara и Selenium для поиска тега svg на странице - PullRequest
4 голосов
/ 25 марта 2011

У меня был такой тестовый пример:

  scenario "there should be an SVG tag" do
    ...
    page.find("svg")
  end

По какой-то причине Capybara не смогла найти тег svg, хотя когда я смотрел в источнике страницы, тег был там (а также визуально).

Мне удалось найти его для поиска тега SVG только после того, как я сделал что-то вроде:

  scenario "there should be an SVG tag" do
    ...
    page.find("#layers *[xmlns='http://www.w3.org/2000/svg']")
  end

(Обратите внимание, svg находится внутри идентификатора "слоев").*

У кого-нибудь есть идеи?Я использую Selenium в качестве драйвера.

Ответы [ 2 ]

3 голосов
/ 25 марта 2011

Оказывается, это проблема встроенного в Firefox оценщика xpath.

Используя FireBug, я смог проверить, что вызов, который использует Selenium:

document.evaluate("//svg", document, null, 9, null).singleNodeValue

невозвращать любые элементы, тогда как

document.evaluate("//div", document, null, 9, null).singleNodeValue

возвращает первый div на странице.

Могут быть некоторые проблемы с пространством имен, которые могут заставить FireFox возвращать элементы svg.Сейчас я только что искал элементы с моим атрибутом svg xmlns.

2 голосов
/ 14 июня 2011

Я нашел решение, которое позволяет использовать селекторы CSS:


scenario "there should be an SVG tag" do
    ...
    Nokogiri::HTML.parse(page.body).css('svg')
end

Странно и досадно, что с помощью page.find () это не работает.

...