selenium运行报错“‘WebElement‘ object is not subscriptable”https://blog.csdn.net/weixin_46777073/article/details/107316005
find_elements_by_xxx() 用法以及 报错TypeError: ‘FirefoxWebElement’ object is not subscriptablehttps://blog.csdn.net/sunandstarws/article/details/104497939
- 使用find_element_by_css_selector只能找到单个元素(注意方法名中element和elements的区别,前者找单个元素,后者能找个列表元素,即多个元素并组成list列表返回输出)
执行如下代码,报错
TypeError: 'WebElement' object is not subscriptable # WebElement没有订阅
from selenium import webdriver
# 创建浏览器对象
dr = webdriver.Chrome() # 切换至除qq输入法以外的其他输入法再运行
# 1 发送请求
dr.get('https://www.baidu.com/')
# 2 保存快照
dr.save_screenshot('baidu1.png')
# jpg格式 和png区别 :png无损,jpg有损
# 3 查看网页代码
# print(dr.page_source)
# 4 获取标签
element = dr.find_element_by_id('s-top-left')
# print(element)
# 获取多个标签
element_a = dr.find_element_by_css_selector('#s-top-left a')
print('element_a:',element_a)
# 5 获取标签包裹的内容
print(element_a[0].text)
解决问题
使用find_element_by_css_selector只能找到单个元素(注意方法名中element和elements的区别,前者找单个元素,后者能找个列表元素,即多个元素并组成list列表返回输出)
element_a = dr.find_element_by_css_selector('#s-top-left a')
#改成
element_a = dr.find_elements_by_css_selector('#s-top-left a')
改后的代码如下,成功运行
from selenium import webdriver
# 创建浏览器对象
dr = webdriver.Chrome() # 切换至除qq输入法以外的其他输入法再运行
# 1 发送请求
dr.get('https://www.baidu.com/')
# 2 保存快照
dr.save_screenshot('baidu1.png')
# jpg格式 和png区别 :png无损,jpg有损
# 3 查看网页代码
# print(dr.page_source)
# 4 获取标签
element = dr.find_element_by_id('s-top-left')
# print(element)
# 获取多个标签
element_a = dr.find_elements_by_css_selector('#s-top-left a')
print('element_a:',element_a)
# 5 获取标签包裹的内容
print(element_a[0].text)
# 6 获取标签的属性
# 7 关闭
dr.close()



