首页 > 解决方案 > 在不带ID的select标签下获取option标签属性

问题描述

我需要在选择标签下获取选项的属性。但是,我无法找到选择标签,因为选择标签没有 id。

<div class="dropdown-wrapper">
   <div class="mobile-dropdown">
   <span class="mobile-arrow"></span>
     <select>
        <option data-url="/series/17948/commentary/1115802/new-zealand-vs- 
        pakistan-1st-odi-pak-in-nz-2017-18?innings=1" value="NZ Innings">NZ 
       Innings
        </option>
        <option data-url="/series/17948/commentary/1115802/new-zealand-vs- 
        pakistan-1st-odi-pak-in-nz-2017-18?innings=2" value="PAK 
        Innings">PAK Innings</option>
    </select>
  </div>
</div>

我尝试了两种方法

  1. 使用 find_elements_by_tag_name('select') 定位选择标签,然后获取选择元素内的所有文本,然后使用 find_elements_by_xpath ("//option[contains(text(), text)]") 定位选项标签。找到选项标签后,我可以将 get_attributes 用于所需属性。这不仅看起来非常复杂,而且有时也不起作用,因为它没有给出选项文本。

  2. 我尝试通过使用 Select(find_element_by_css_selector("class") 来使用 Select。使用的类名来自 div 标签。然后使用 select.select_by_index(1).getattribute()。但是,我得到一个错误“选择未定义”。

第一个代码

elem=driver.find_elements_by_tag_name('select')
options=[x.text for x in elem]
first_inn=options[2].split('\n')[1]
second_inn=options[2].split('\n')[0]
option=driver.find_elements_by_xpath("//option[contains(text(), first_inn)]")
option[7].get_attribute('data-url')

第二代码

  select = Select(driver.find_element_by_css_selector("mobile-dropdown"))
    first_inn=select.select_by_index(1).get_attribute('data-url')
    second_inn=select.select_by_index(0).get_attribute('data-url')

对于第一个代码,我收到 ['','',''] 并且对于第二个代码,我收到一条错误消息“名称 'Select' 未定义”

标签: pythonseleniumselectcss-selectorswebdriverwait

解决方案


试试这个 xpaths:

新西兰局:(.//div[@class='mobile-dropdown']/select/options)[1]

PAK 局:(.//div[@class='mobile-dropdown']/select/options)[2]


推荐阅读