【发布时间】:2021-06-17 09:38:39
【问题描述】:
你好,我在 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
【问题讨论】:
-
如果它只找到 5 则要么尝试向下滚动(如果它有延迟加载)或等待所有元素都存在。
-
我确实滚动并等待超过 30 秒它不起作用,而是跳过 5 个元素并在接下来的 5 个元素上工作
标签: python selenium error-handling webdriver