python - Python selenium webdriver:列表索引超出范围最多5个元素
问题描述
您好,我在 twitter 上使用 selenium 单击多个回复按钮,driver.find_elements_by_xpath
我面临的问题是我只能单击 5 个元素,而不能更多。这是清单的印刷品
[<selenium.webdriver.remote.webelement.WebElement (session="cc78e4de72bea5cfc9499af03f3e9271",
element="c9beaf38-e9a9-46af-baa8-eff476c87be8")>, <selenium.webdriver.remote.webelement.WebElement
(session="cc78e4de72bea5cfc9499af03f3e9271", element="7cd7649f-efc5-48b5-9e68-3d97a96e72cc")>,
<selenium.webdriver.remote.webelement.WebElement (session="cc78e4de72bea5cfc9499af03f3e9271",
element="6d1e9ce9-9b17-4f69-8c49-0805331549fd")>, <selenium.webdriver.remote.webelement.WebElement
(session="cc78e4de72bea5cfc9499af03f3e9271", element="1c4f540d-2dfe-4ed5-80ba-01bf5ba1a389")>,
<selenium.webdriver.remote.webelement.WebElement (session="cc78e4de72bea5cfc9499af03f3e9271",
element="0eaa0f99-0e62-45cf-bc57-fef86ac30e03")>]
你可以清楚地数出5个元素
这是我的代码
reply1 = driver.find_elements_by_xpath('//div[@data-testid="reply"]/div/div[1]')
count = 0
reply1[count].click()
count = count + 1
print (count)
print(reply1)
sleep(4)
driver.back()
except common.exceptions.ElementClickInterceptedException:
time.sleep(2)
driver.execute_script("window.scrollTo(0, window.scrollY + 200)")
time.sleep(2)
我收到了这个错误:
reply1[count].click()
IndexError: list index out of range
PS C:\Users\92\Desktop\new features test\new feature>
[7300:18956:0320/013757.708:ERROR:ssl_client_socket_impl.cc(924)] handshake failed; returned -1, SSL
error code 1, net_error -101
更新:我做了一些更改,代码正在处理 9 个元素,
count = 0
running = True
while running:
loop = True
while loop:
reply1 = driver.find_elements_by_xpath('//div[@data-testid="reply"]/div/div[1]')
reply = reply1[count]
sleep(1)
print(reply)
reply1[count].click()
#comment_buttons[count].click()
sleep(4)
driver.back()
loop = False
count = count + 1
print (count)
sleep(1)
time.sleep(2)
driver.execute_script("window.scrollTo(0, window.scrollY + 200)")
print ("d2")
time.sleep(2)
打开 9 个元素后,我收到此错误:
Traceback (most recent call last):
File "c:\Users\92\Desktop\new features test\new feature\test copy.py", line
155, in <module>
reply = reply1[count]
IndexError: list index out of range
解决方案
我尝试了 2 种类型,在ElementClickInterceptedException
打开 7 条评论按钮后出现的第一个代码中,我尝试通过滚动来处理它,但它一直在滚动,最大的问题是,在这两种情况下,推文显然都没有加载背景
for _ in range(6): # loop as many times as you want to scroll
tweets = driver.find_elements_by_xpath('//div[@data-testid="reply"]/div/div[1]')
for tweet in tweets:
tweet.click()
sleep(2)
driver.back()
driver.execute_script("window.scrollTo(0, window.scrollY + 200)")
sleep(3)
我尝试的第二个代码正在处理 11 个评论按钮然后IndexError: list index out of range
来了
count = 0
for _ in range(20):
try:
tweets = driver.find_elements_by_xpath('//div[@data-testid="tweet"]/div/div[1]')
print(tweets)
for tweet in tweets:
reply = driver.find_elements_by_xpath('//div[@data-testid="reply"]/div/div[1]')
reply[count].click()
#print(reply)
sleep(2)
driver.back()
count = count + 1
print(count)
driver.execute_script("window.scrollTo(0, window.scrollY + 200)")
sleep(3)
except common.exceptions.ElementClickInterceptedException:
time.sleep(2)
driver.execute_script("window.scrollTo(0, window.scrollY + 200)")
print ("except ! ")
time.sleep(2)
推荐阅读
- c - 无法使用 wolfssh 库与 Cisco IOS 设备建立 ssh 连接
- r - 每个子组的计算和重塑数据框
- azure - 有一种方法可以删除 azure webapp 上的 http 到 https 重定向?
- django - 运行 docker-compose 时出错:django.db.utils.OperationalError:致命:用户“postgres”的密码验证失败
- three.js - 使用 OBJLoader2 加载 Obj 以加载顶点颜色
- c# - 删除 DataGrid 行单击图像
- python - SMOTE with multiple bert inputs
- haskell - 制作 Semigroup 的参数化数据类型实例
- python - 如果有数字,正则表达式根本不匹配
- django - Django 调试工具栏并包含在 urls.py 中(据说)