2014-09-19 3 views
1

Что не так с моим синтаксисом xpath? Узлы, которые я пытаюсь через фильтр и мой код:Selenium webdriver xpath filtering

div class="cmeTableBlockWrapper cmeContentSection cmeContentGroup" 
table id="quotesFuturesProductTable1" 
tr[1:] 
    td id="quotesFuturesProductTable1_ZCZ4_last" 
    td id="quotesFuturesProductTable1_ZCZ4_change" 
    td id="quotesFuturesProductTable1_ZCZ4_priorSettle" 

url = "http://www.cmegroup.com/trading/agricultural/grain-and-oilseed/corn.html" 

driver = webdriver.Chrome() 

driver.get(url) 

table = driver.find_element_by_xpath('//div[class="cmeTableBlockerWrapper cmeContentSection cmeContentGroup"]/table[@id="quotesFuturesProductTable1"]') 

# or table = driver.find_element_by_xpath('//td[contains(div[@class="fixedpage_heading"], "CORN")]/table[@class="homepage_quoteboard"]') 

for row in table.find_elements_by_tag_name('tr')[1:]: 
    priorsettle = str(row.find_element_by_id('quotesFuturesProductTable1_ZSX4_priorSettle').text) 

ответ

1

Найти таблицу by id, получить соответствующую строку по индексу (самый простой способ здесь):

table = driver.find_element_by_id('quotesFuturesProductTable1') 
for row in table.find_elements_by_tag_name('tr')[2:]: 
    print row.find_elements_by_tag_name('td')[4].text 

Печать (Prior Settle колонка):

338'2 
350'6 
359'2 
366'2 
374'0 
384'2 
393'6 
400'4 
404'4 
402'0 
402'0 
418'2 
407'4 

Обратите внимание, что мы должны пропустить 2 строки, ни один, так как есть две tr метки до фактического начала содержимого таблицы.

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