2016-08-01 22 views
0

Я использую Selenium для разбора страницы, содержащей разметку, которая выглядит немного как это:Python selenium webdriver. Найти элементы с именем указанного класса

<html> 
    <head><title>Example</title></head> 
    <body> 
     <div> 
      <span class="Fw(500) D(ib) Fz(42px)">1</span> 
      <span class="Fw(500) D(ib) Fz(42px) Green XYZ">2</span> 
     </div> 
    </body> 
</html> 

Я хочу, чтобы извлечь все элементы пролетных, которые содержат класс Foobar.

Я попробовал оба из этого (переменная WD является экземпляром selenium.webdriver):

elem = wd.find_elements_by_css_selector("span[class='Fw(500) D(ib) Fz(42px).']") 

elem = wd.find_element_by_xpath("//span[starts-with(@class, 'Fw(500) D(ib) Fz(42px))]") 

ни один из которых РАБОТЫ.

Как можно выбрать только те элементы, которые начинаются с Fw(500) D(ib) Fz(42px)

т.е. обоих пролетных элементов в образце разметки данного.

ответ

1

Попробуйте, как показано ниже: -

elem = wd.find_elements_by_css_selector("span.foobar") 

Если есть пространство между классом foo и bar попробуйте, как показано ниже: -

elem = wd.find_elements_by_css_selector("span.foo.bar") 

Отредактировано: Если ваш класс содержит с не алфавитного Charactor и вы хотите найти элемент, который начинается с Fw(500) D(ib) Fz(42px), а затем попробуйте как можно ниже: -

elem = wd.find_elements_by_css_selector("span[class ^= 'Fw(500) D(ib) Fz(42px)']") 
+0

Извините, я дал плохой пример. Мой foobar фактически содержит пробелы. Я изменю вопрос, чтобы подумать, что –

+0

@HomunculusReticulli означает 'foo bar' ?? –

+0

Да. См. Исправленный вопрос –

-1

Попробуйте найти элементы с помощью XPath:

//span[@class='foobar'] 

Это должно работать.

+0

Чтобы быть справедливым (кому бы это ни отмечалось ответьте). С тех пор вопрос изменился, когда был дан этот ответ, и я удалил все ссылки на foobar из моего первоначального вопроса (см. Обсуждение с Саурабом Гауром ниже). –

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