如何在Selenium Python内部迭代具有<span>对象的<li>

时间:2019-02-26 15:09:03

标签: python-3.x selenium selenium-webdriver web-scraping webdriver

这是我要使用的页面的HTML。在页面中,我要遍历如下所示的下拉菜单:

<ul class="col-24 position-absolute station-filter mobile-region s-padd-0-10">
      <li class=class="flex flex-wrap flex-display-block col-24 bg-white radius-5 overflow-scroll-y station-filter-inside">
          <span class="col-24 display-block padd-15-0 brd-bottom-1 station-select-region">Antofagasta</span>
          <span class="col-24 display-block padd-15-0 brd-bottom-1 station-select-region">Atacama</span>
          <span class="col-24 display-block padd-15-0 brd-bottom-1 station-select-region">Arica y parinacota</span>
          <span class="col-24 display-block padd-15-0 brd-bottom-1 station-select-region">Tarapaca</span> 
          <span class="col-24 display-block padd-15-0 brd-bottom-1 station-select-region">Biobio</span>

因此,我想做的是每个跨度选项分别为click()

这就是我现在拥有的:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome(r"C:\Users\juanc\OneDrive\Escritorio\chromedriver.exe")
driver.get("https://ww2.copec.cl/stations?check=punto")
driver.find_element_by_xpath("//*[@id='root']/div[1]/div/ul/li[1]/a").click()
result = driver.find_element_by_xpath('//*[@id="root"]/div[1]/div/ul/li[1]/ul/li')
options = result.find_element(By.CLASS_NAME("col-24 display-block padd-15-0 brd-bottom-1 station-select-region"))
for option in options:
    print(option.text)

1 个答案:

答案 0 :(得分:0)

尝试此代码。希望对您有所帮助。

from selenium import webdriver

driver = webdriver.Chrome(r"C:\Users\juanc\OneDrive\Escritorio\chromedriver.exe")

driver.get("https://ww2.copec.cl/stations?check=punto")
driver.find_element_by_xpath("//*[@id='root']/div[1]/div/ul/li[1]/a").click()
results = driver.find_elements_by_css_selector('span.station-select-region')

for rs in results:
    print(rs.text)

输出:

Antofagasta
Atacama
Arica y parinacota
Tarapacá
Biobio
La araucanía
Maule
Los lagos
Los rios
Magallanes
Aysén
Valparaíso
Metropolitana
Coquimbo
O higgins