2016-07-06 7 views
0

Я в настоящее время обучения селена с помощью Pythonполучить все элементы в цикле через XPath

HTML является:

<ol class="item-section"> 
<li> 
    <div class="abc xyz"> 
      <div class="foo qwe"> 
       <a href="/watch123"></a> 
      </div> 
    </div>   
</li> 
<li> 
    <div class="abc xyz"> 
      <div class="foo qwe"> 
       <a href="/watch456"></a> 
      </div> 
    </div> 
</li> 
<li> 
    <div class="abc xyz"> 
      <div class="foo qwe"> 
       <a href="/watch678"></a> 
      </div> 
    </div> 
</li> 
</ol> 

Я хочу, чтобы все hrefs из списка, с помощью XPath Я попытался

html_list = driver.find_element_by_class_name("item-section") 
    items = html_list.find_elements_by_tag_name("li") 
    stack=[] 
    index = 1 
    for item in items: 
     index+=1 
     link = item.find_element_by_xpath("//div[@class='foo qwe']["+index+"]/a") 
     print (index,"---> ",link.get_attribute("href")) 

но дает ошибку Can't convert 'int' object to str implicitly Если я просто использовать

link = item.find_element_by_xpath("//div[@class='foo qwe']/a") 

я получаю первые HREF несколько раз

+2

почему бы вам не пойти на 'driver.find_elements_by_xpath (" // ДИВ [@ класс = 'Foo qwe ']/a ")' – Madhan

+0

Спасибо! это сработало – MrRobot9

+0

@Madhan вам нужно разместить его в качестве ответа, и OP должен принять его как ответ .... спасибо –

ответ

0

Вы можете получить список элементов с помощью

driver.find_elements_by_xpath("//div[@class='foo qwe']/a") 

or 

from selenium.webdriver.common.by import By 
inputs = driver.find_elements(By.XPATH, "//div[@class='foo qwe']/a") 
Смежные вопросы