有些时候网页中有些元素它们的名字是一样的,以至于使用前面提到的方法我们实现我们想要的效果
这个时候我们需要使用wd.find_elements()
来获取网页上的多个元素
以本博客为例
假设我们想点击第三个文章的图片
通过开发者工具
找到图片对应的代码
我们发现了class属性,如果用之前wd.find_element(By.CLASS_NAME,'')是**不能获取**到第三个
选择定位到第三个图片的。
因为item-thumb-small lazy
在文章中有多处出现,使用find_element只能选择第一个item-thumb-small lazy
使用wd.find_elements()
elements = wd.find_elements(By.CLASS_NAME,'item-thumb-small lazy')
如果你这样写,会报错
错误的原因在于,虽然它CLASS的值是item-thumb-small lazy
但是在写代码的时候这个空格要给他换成.
正确写法应该是:
elements = wd.find_elements(By.CLASS_NAME,'item-thumb-small.lazy')
它会返回一个数组 此时elements是一个数组
由于页面上有五个文章图片item-thumb-small lazy
所以这个elements就分别代表这五个
也就是说elements[0]代表了页面上第一个图片
我们要点击的是第三个图片 所以就是elements[2]
完整代码
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
wd = webdriver.Chrome(service = Service('chromedriver.exe'))
wd.get('https://www.yuofyou.cn')
elements = wd.find_elements(By.CLASS_NAME,'item-thumb-small.lazy')
elements[2].click()
input()