有些时候网页中有些元素它们的名字是一样的,以至于使用前面提到的方法我们实现我们想要的效果

这个时候我们需要使用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()
最后修改:2023 年 07 月 03 日
如果觉得我的文章对你有用,请随意赞赏