2013-09-10 4 views
1

Я пытаюсь найти xpath элемента ниже, чтобы позже получить текст с помощью Ruby Selenium-webdriver (то есть helloPage.mainHeader.get_text).Скрытый XPATH, чтобы найти элемент текста? Ruby-selenium

<div class="container"> 
    <div class="template-section"> 
    <div class="front"> 
     <h3 class="containerHeading"> 
     <i class="icon_image"></i> 
     "Hello world <-----------------------3 whitespaces 
     " 
     </h3> 
    </div> 
    </div> 
</div> 

Я работал над xpaths, но каждый раз, когда я перезапускал тест, его время по существу элемента не существует. Он хорошо виден в пользовательском интерфейсе, а не скрыт.

Почему мой xpath ошибочен? Я попытался следующие:

  1. //div[@class='container']//div[@class='template-section']//div[@class='front']//h3[@class='containerHeading']
  2. //div[@class='front']//h3[@class='containerHeading']
  3. //h3[@class='containerHeading']

Я положил спать до выполнения helloPage.mainHeader.get_text, где mainHeader имеет выражение XPath, и это не сработало. Есть ли что-то загадочное в тексте Hello World? Формат действительно похож на то, как я его напечатал.

+0

Посмотрите на «xpaths», которые вы предоставили, все они действительны. Однако для «A» вы можете переписать его как '// div [@ class = 'container']/div [@ class = 'template-section']/div [@ class = 'front']/h3 [@class = 'containerHeading'] ', обратите внимание на одиночные передние косые черты, разделяющие элементы. Так вы видите ошибку или исключение, когда пытаетесь найти элемент? Вы использовали другой инструмент, чтобы проверить, что ваш «xpath» также действителен? –

+0

Используйте Firefox с firepath для проверки вашего xpath. Также, как и эксперимент, измените [@ class = 'foo'] на [содержит (@class, 'foo')]. –

+0

@Mark Rowlands - Да, я получаю ошибки, когда использовал ваш предоставленный xpath. Вместо этого я меняю его на: // div [@ class = 'container'] // div [@ class = 'template-section']/div [@ class = 'front']/h3 [@ class = 'containerHeading '], то это допустимый xpath. Обратите внимание, что есть // в разделе шаблона Значение xpath возвращается пустым, когда я пытаюсь получить текст. – user2763948

ответ

0

все ваши xpaths кажутся мне верными ... Я думаю, когда вы пытаетесь найти элемент, используя свой xpath ... элемент не загружен правильно ... попробуйте использовать явное ожидание. Пожалуйста, попробуйте использовать приведенный ниже код:

 

    wait = Selenium::WebDriver::Wait.new(:timeout => 10) 
    wait.until { driver.find_elements(:xpath, "Any of your above mentioned xpaths") } 

+0

Было ли это полезно? – Paras

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