Selenium按标签名称选项搜索

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium按标签名称选项搜索相关的知识,希望对你有一定的参考价值。

我试图从一个名为Correios的网站获取所有数据,在这个网站上,我需要处理一些下拉菜单,我遇到了一些问题:它返回一个带有一堆空字符串的列表。

chrome_path = r"C:UsersGustavoDesktopgeckodriverchromedriver.exe"
driver = webdriver.Chrome(chrome_path)
lista_x = []
driver.get("http://www2.correios.com.br/sistemas/agencias/")
driver.maximize_window()

dropdownEstados = driver.find_elements_by_xpath("""//*[@id="estadoAgencia"]""")

optEstados = driver.find_elements_by_tag_name("option")

for valores in optEstados:
    print(valores.text.encode())

我从中得到的是:

b''
b'ACRE'
b'ALAGOAS'
b'AMAPxc3x81'
b'AMAZONAS'
b'BAHIA'
b'CEARxc3x81'
b'DISTRITO FEDERAL'
b'ESPxc3x8dRITO SANTO'
b'GOIxc3x81S'
b'MARANHxc3x83O'
b'MINAS GERAIS'
b'MATO GROSSO DO SUL'
b'MATO GROSSO'
b'PARxc3x81'
b'PARAxc3x8dBA'
b'PERNAMBUCO'
b'PIAUxc3x8d'
b'PARANxc3x81'
b'RIO DE JANEIRO'
b'RIO GRANDE DO NORTE'
b'RONDxc3x94NIA'
b'RORAIMA'
b'RIO GRANDE DO SUL'
b'SANTA CATARINA'
b'SERGIPE'
b'Sxc3x83O PAULO'
b'TOCANTINS'
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''

如何删除空b“”?

答案

如果我理解,你想要找到所有这些选项。

enter image description here

试试这个xPath来定位下拉元素:

//*[@id="estadoAgencia"]/option

代码示例:

chrome_path = r"C:UsersGustavoDesktopgeckodriverchromedriver.exe"
driver = webdriver.Chrome(chrome_path)
lista_x = []
driver.get("http://www2.correios.com.br/sistemas/agencias/")
driver.maximize_window()

dropdownEstados = driver.find_elements_by_xpath("//*[@id='estadoAgencia']")

# find elements in dropdown
optEstados = driver.find_elements_by_xpath("//*[@id='estadoAgencia']/option")

for valores in optEstados:
    print(valores.text.encode())

通过这个xPath你将得到所有下拉元素,除了一个空字符串,这是在这个下拉列表中。输出:

b''
b'ACRE'
b'ALAGOAS'
b'AMAPxc3x81'
b'AMAZONAS'
b'BAHIA'
b'CEARxc3x81'
b'DISTRITO FEDERAL'
b'ESPxc3x8dRITO SANTO'
b'GOIxc3x81S'
b'MARANHxc3x83O'
b'MINAS GERAIS'
b'MATO GROSSO DO SUL'
b'MATO GROSSO'
b'PARxc3x81'
b'PARAxc3x8dBA'
b'PERNAMBUCO'
b'PIAUxc3x8d'
b'PARANxc3x81'
b'RIO DE JANEIRO'
b'RIO GRANDE DO NORTE'
b'RONDxc3x94NIA'
b'RORAIMA'
b'RIO GRANDE DO SUL'
b'SANTA CATARINA'
b'SERGIPE'
b'Sxc3x83O PAULO'
b'TOCANTINS'

注意:第一个元素是一个空字符串,因为:

img2

另一答案

您的代码需要进行一些小改动:

 dropdownEstados = driver.find_element_by_xpath("""//*[@id="estadoAgencia"]""")
 optEstados = dropdownEstados.find_elements_by_tag_name("option")

  for valores in optEstados:
     print(valores.text.encode())
另一答案

要从ID为<options>的DropDown的所有estadoAgencia中检索文本,因为它是<select>标记,使用与<select>标记关联的方法会更容易和有效,您可以使用以下解决方案:

  • 代码块: estado_select = Select(driver.find_element_by_id('estadoAgencia')) for opt in estado_select.options: print(opt.get_attribute('innerhtml'))
  • 控制台输出: ACRE ALAGOAS AMAPÁ AMAZONAS BAHIA CEARÁ DISTRITO FEDERAL ESPÍRITO SANTO GOIÁS MARANHÃO MINAS GERAIS MATO GROSSO DO SUL MATO GROSSO PARÁ PARAÍBA PERNAMBUCO PIAUÍ PARANÁ RIO DE JANEIRO RIO GRANDE DO NORTE RONDÔNIA RORAIMA RIO GRANDE DO SUL SANTA CATARINA SERGIPE SÃO PAULO TOCANTINS

以上是关于Selenium按标签名称选项搜索的主要内容,如果未能解决你的问题,请参考以下文章

如何在GIT中按名称搜索标签?

标签视图中的 Android 操作栏搜索

Selenium-Selenium其他自动化操作

我如何使用 codeanywhere 片段

如何根据选择另一个下拉选项来聚焦搜索文本框 - vuejs

操作栏标签片段中的片段?