Как получить текст из списка элементов в Selenium Python? - PullRequest
1 голос
/ 10 октября 2019

Рассмотрим следующий HTML-код.

<div id="tree" style="max-height: 300px; overflow-y: scroll;" class="treeview">
 <ul class="list-group">
  <li class="list-group-item node-tree" data-nodeid="0" style="color:undefined;background-color:undefined;">
   <span class="icon glyphicon"></span>
   <span class="icon node-icon glyphicon glyphicon-unchecked">
   </span>
   Apples
  </li>
  <li class="list-group-item node-tree" data-nodeid="1" style="color:undefined;background-color:undefined;">
   <span class="icon glyphicon"></span>
   <span class="icon node-icon glyphicon glyphicon-unchecked">
   </span>
   Bananas
  </li>
  <li class="list-group-item node-tree" data-nodeid="2" style="color:undefined;background-color:undefined;">
   <span class="icon glyphicon"></span>
   <span class="icon node-icon glyphicon glyphicon-unchecked">
   </span>
   Mangoes
  </li>
  <li class="list-group-item node-tree" data-nodeid="3" style="color:undefined;background-color:undefined;">
   <span class="icon glyphicon"></span>
   <span class="icon node-icon glyphicon glyphicon-unchecked">
   </span>
   Grapes
  </li>
 </ul>
</div>

Я пытался получить текст «Яблоки», «Бананы», «Манго» и «Виноград», используя

i = 1
m = 2
while i < m:
    css_id = ".list-group-item:nth-child(" + str(i) + ") > .node-icon"
    try:
        fruit_text = driver.find_element(By.CSS_SELECTOR, css_id).text
        print(fruit_text)
        i += 1
        m += 1
    except:
        i += 1

но в результате строки не были напечатаны.

Есть идеи, как ее решить?

1 Ответ

1 голос
/ 10 октября 2019

Это должно работать для вас:

fruits_list = driver.find_elements_by_css_selector('.list-group-item.node-tree')

for fruit in fruits_list:
   print(fruit.text)

Просто убедитесь, что .list-group-item.node-tree этот css селектор должен указывать фрукты на веб-странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...