2015-06-29 3 views
0

У меня возникают проблемы с поиском элементов с использованием xpath при попытке написать автоматические тесты WebUI с помощью Arquillian Drone + Graphene. Чтобы выяснить, что я делаю, я попытался найти кнопку поиска на google homepage. Даже этого я не делаю. Ни с абсолютным, ни с относительным xpath.Поиск WebElements с использованием XPATH (NoSuchElementException)

Однако я могу найти элементы с помощью идентификаторов или когда в строке xpath есть идентификатор. Но только тогда, когда идентификатор является реальным идентификатором и не генерируется. Например, на главной странице google: Логотип google имеет реальный идентификатор «hplogo». Я могу найти этот элемент, используя непосредственно идентификатор или идентификатор в выражении xpath.

Почему логотип google можно использовать с идентификатором «hplogo», но сбой при использовании абсолютного xpath "/html/body/div[1]/div[5]/span/center/div[1]/div/div"? Я действительно смущен. Что я делаю не так? Любая помощь приветствуется!

РЕДАКТИРОВАТЬ:

WebElement e = browser.findElement(By.xpath("/html/body/div[1]/div[5]/span/center/div[1]/div/div")); вызывает NoSuchElementException.

ответ

1

Ваше выражение работает с Firefox, но в браузере на основе webkit (например, chrome) рендеринг DOM немного отличается. Возможно, это зависит от локализации (google.co.uk для меня). Если я заставляю на google.com изображение логотипа для меня: /html/body/div/div[5]/span/center/div[1]/img на светлячок 37 и /html/body/div/div[6]/span/center/div[1]/img на темэ 42.

EDIT: После обсуждения в чате, мы полагаем, что HtmlUnit действительно создает DOM, который отличается из одного реального рендеринга браузеров. Предлагается перейти на FirefoxDriver

+0

Как выглядит рендер DOM? Ваше выражение xpath не работает для меня. – Marco

+0

Можете ли вы определить, какой браузер использует ваш код? Я могу опубликовать скриншоты, которые показывают, что ваше выражение работает в firefox 37, но не в chrome 42. Возможно, это зависит от локализации (google.co.uk для меня). Если я нахожусь на google.com, то логотип изображения для меня: '/ html/body/div/div [5]/span/center/div [1]/img' на firefox и'/html/body/div/div [6]/span/center/div [1]/img' на Chome. – legrass

+0

Использует htmlUnit. Моя проблема не имеет прямого отношения к главной странице google или локализации. Я получаю ту же ошибку (NoSuchElementException) при использовании xpath на других сайтах. – Marco

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