Selenium Python中使用select_by_index()提取文本时出现NoneType错误的原因探究
为什么
select.select_by_index(0).text会抛出NoneType错误? 嘿,这个问题其实很好解释,咱们一步步拆解来看:
你用select.options[0].text能拿到"2017",是因为select.options[0]返回的是下拉框里的第一个选项元素对象(WebElement),这个对象本身自带.text属性,所以能正常读取文本内容。
但select.select_by_index(0)的逻辑完全不一样——这个方法的作用仅仅是执行「选中对应索引选项」的操作,它没有设计返回值,执行完成后就会返回None。你紧接着在后面加.text,就相当于给None去调用.text属性,自然就会触发AttributeError: 'NoneType' object has no attribute 'text'的错误了。
如果你的需求是「选中选项后获取它的文本」,有两种简单的解决方式:
方式一:先选中,再获取当前选中项的文本
from selenium import webdriver from selenium.webdriver.support.ui import Select browser = webdriver.Chrome() url = "https://ssangmun.sen.es.kr/66769/subMenu.do" browser.get(url) browser.maximize_window() select = Select(browser.find_element_by_id("srhMlsvYear")) # 先执行选中操作 select.select_by_index(0) # 获取当前选中的选项文本 selected_text = select.first_selected_option.text print(selected_text) # 输出 "2017"
方式二:先拿到选项元素,再选中并获取文本
select = Select(browser.find_element_by_id("srhMlsvYear")) # 先获取目标选项元素 target_option = select.options[0] # 获取文本 option_text = target_option.text # 执行选中操作 target_option.click() print(option_text) # 输出 "2017"
这样就不会再遇到NoneType的问题了~
内容的提问来源于stack exchange,提问作者너구리선생님
相关产品推荐
相关产品推荐

