Использование селектора css в Selenium Webdriver с Ruby

У меня есть этот код, для которого я выполняю автоматическое тестирование с использованием ruby.

<div class="class1 class2 class3 class4" style="padding: 4px;" id="_d4b99a9f-d1c8-4587-94e2-5ee95ebf1f76"> 
    <span class="class5" style="font-weight: bold; text-decoration: underline;">This is new TITLE</span> 
    <div class="class6" dd:contenttype="TEST CONTENT TYPE" dd:concept="TITLE" id="_7cfd6eed-fa15-42b8-81af-d09bf3cd4460">
     <div class="class7"> 
      <div class="class8" dd:contenttype="TEST CONTENT" dd:entityid="0" dd:entityversion="0" id="_1c9125c4-b078-4017-a5ad-c48210e7090b"> 
       <div class="class9 class10" dd:btnfloatingstyle="top-right" dd:entitytexttype="resultval" id="_9c41159a-3a5b-4de1-87d2-e3361bd4d746" contenteditable="true"></div> 
      </div> 
     </div>
    </div> 
   </div> 

Я хочу найти элемент, используя либо «Это новый НАЗВАНИЕ», либо «НАЗВАНИЕ», для которого я пробовал find_element с селектором css, а также с помощью xpath, но, похоже, ни один из них не работал для меня.

driver.find_element(:css, "span.class5") or `driver.find_element(:css, "div.class1 class2 class3 class4 span.class5")` 

Ничто, казалось, не работало для меня. Я что-то упускаю?


person tech_human    schedule 29.07.2013    source источник
comment
Отличается ли этот вопрос от предыдущего — Найти элементы с помощью Selenium Webdriver?   -  person Justin Ko    schedule 30.07.2013
comment
Просто постараюсь конкретизировать вопрос.   -  person tech_human    schedule 30.07.2013
comment
Если вы уточняете вопрос, вам следует отредактировать существующий, а не создавать новый.   -  person Justin Ko    schedule 30.07.2013


Ответы (2)


Да, это можно сделать с помощью selenium-webdriver и :xpath. Взгляните на приведенный ниже пример:

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.navigate.to "http://en.wikipedia.org/wiki/Ruby_(programming_language)"

driver.find_element(:xpath,"//span[@class = 'mw-headline' and text() = 'Ruby 1.0' ]").tag_name
# => "span"
driver.find_element(:xpath,"//span[@class = 'mw-headline' and text() = 'Ruby 1.0' ]").text
# => "Ruby 1.0"

Этот пример полностью эквивалентен вашему коду html. Теперь попробуйте создать свой xpath, воспользовавшись помощью вышеперечисленного. Вы добьетесь успеха.

person Arup Rakshit    schedule 30.07.2013

Используйте драгоценный камень нокогири

require 'nokogiri'

$page_html = Nokogiri::HTML.parse(browser.html)

$page_html.css("span.ddsectiondisplay").text
=>"This is new Title"

Или если вы просто используете watir.

browser.title
=>"title of page" 
person Duck1337    schedule 29.07.2013