【发布时间】:2020-07-04 22:37:43
【问题描述】:
共有41个类别复选框,12个可见,其余为隐藏,需要点击显示更多才能显示 隐藏的复选框。
这段代码 这样做:: 1-loop >> 2-click on show more if i > 3-click on checkbox
# -*- coding: utf-8 -*-
import time
from selenium import webdriver
driver = webdriver.Chrome(executable_path='C:\\Users\\Compu City\\Desktop\\chromedriver.exe')
driver.get('https://www.amazon.com/international-sales-offers/b/?ie=UTF8&node=15529609011&ref_=nav_navm_intl_deal_btn')
time.sleep(10)
res = driver.execute_script("return document.documentElement.outerHTML")
i=0
while i <= 41 :
if(i <=12):
driver.find_element_by_css_selector('#widgetFilters > div:nth-child(1) > div.a-row.a-expander-container.a-expander-inline-container > a > span').click()
driver.find_elements_by_css_selector('.a-expander-container .a-checkbox label .a-label')[i].click()
driver.implicitly_wait(2)
time.sleep(2)
i+=1
问题:代码适用于 12 个复选框,然后单击显示更多,然后仅单击第一个复选框 NO.13,然后出现此错误
D:\python neww>aaa.py
DevTools listening on ws://127.0.0.1:59799/devtools/browser/ac2188e0-10e3-493b-9d91-614731f8d135
Traceback (most recent call last):
File "D:\python neww\aaa.py", line 14, in <module>
driver.find_elements_by_css_selector('.a-expander-container .a-checkbox label .a-label')[i].click()
IndexError: list index out of range
我搜索了很多关于 selution 的内容,我发现 echeckbox 没有加载,但是当用 .text 更改 .click() 时
我得到了所有复选框标签名称,所以它们不会加载
【问题讨论】:
-
错误基本上告诉你变量'lst'没有定义。您需要确保在运行此行之前始终为其分配一些东西。为了我们帮助你,你能展示一下整个函数的代码吗?
-
我添加了所有有问题的代码
-
我在您的代码中看不到
lst = [item ...]失败的行。 -
对不起,我更正了另一个文件中的错误
-
driver.find_elements_by_css_selector('.a-expander-container .a-checkbox label .a-label')[i].click()这是导致问题的行。似乎是i;th element element matching with.a-expander-container .a-checkbox 标签 .a-label` CSS 在页面上不存在。这意味着您没有那么多与该 CSS 匹配的元素。
标签: python css selenium web-scraping scrapy