2016-03-29 2 views
1

На веб-странице есть код:питон задать селектор CSS

<table> 
    <tbody> 
    <tr> 
    <td> 
    <time data-timestamp="1458895194718" title="2016-03-25 11:39:54<small class="milliseconds">.718</small>">11:39</time> 
    </td> 
    <td> 
    <span class="invisep"><</span> 
    <mark class="nickname" style="cursor:pointer; color:#03DC03">usernickname</mark> 
    <span class="invisep">></span> 
    </td> 

Мне нужно, чтобы получить стиль = и я получил совет использовать:

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.by import By 
from selenium.webdriver.firefox.webdriver import FirefoxProfile 


    colorelement = driver.find_element_by_css_selector('mark.nickname') 
    color = colorelement.get_attribute('style') 

и он работает, но мой код возвращает меня только найденное первое значение. На веб-странице есть много блоков, и у всех есть блок Код find_elements_by_css_selector возвращает «Объект AttributeError: 'list' не имеет атрибута 'get_attribute'" Не могли бы вы помочь мне, пожалуйста, как я могу получить второе (третье и т. Д.) Значение или, может быть, это можно найти все значения сразу

+0

код, который вы использует 'find_element_ *', который возвращает только первый матч, даже если их больше одного. Похоже, вы хотите 'find_element ** s ** _ *', который вернет все элементы, которые соответствуют. См. Ответ Флоранта Б. ниже. – JeffC

ответ

1

Вам необходимо позвонить get_attribute для каждого элемента:

elements = driver.find_elements_by_css_selector('mark.nickname') 
for element in elements: 
    print element.get_attribute('style') 
    print color 

Или со списком понимания:

elements = driver.find_elements_by_css_selector('mark.nickname') 
colors = [element.get_attribute('style') for element in elements] 
for color in colors: 
    print color 
Смежные вопросы