python - 在不带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>
我尝试了两种方法
使用 find_elements_by_tag_name('select') 定位选择标签,然后获取选择元素内的所有文本,然后使用 find_elements_by_xpath ("//option[contains(text(), text)]") 定位选项标签。找到选项标签后,我可以将 get_attributes 用于所需属性。这不仅看起来非常复杂,而且有时也不起作用,因为它没有给出选项文本。
我尝试通过使用 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' 未定义”
解决方案
试试这个 xpaths:
新西兰局:(.//div[@class='mobile-dropdown']/select/options)[1]
PAK 局:(.//div[@class='mobile-dropdown']/select/options)[2]
推荐阅读
- kubernetes - Istio 过滤器在 EKS 集群上的 Istio 1.9 上被完全忽略
- python - 如何使用 Python 防止 SQLite 中的重复行或数据?
- java - Java中的日期格式化为特定格式
- firebase - 颤动:无法显示来自 Firebase Firestore 的图像
- java - Spring Boot POST 端点返回 405 而不是 200
- python - 如何为 QtKernelManager 子进程内核指定启动代码以传递数据以进行进程间通信?
- fortran - 使用 P 描述符写入标准输出的第二个实数是错误的 10 倍
- reactjs - 将插件配置传递给实现 Slate-Plugins 的组件。获取 TypeError:(解构参数)未定义
- php - Laravel 8:如何将数据插入一对一关系
- node.js - Jest 单元测试 Singleton 类 Nodejs