python - 如何在 selenium python 中处理加载更多按钮
问题描述
我是 python 新手,我正在尝试使用 selenium 和 python 自动单击 instagram 评论部分中的加载更多按钮。我只能点击一次。第一次单击按钮消失后,我等了 10 分钟,但它没有再次出现。当使用自动化执行点击时,请求的状态也更改为 302。手动单击时状态码保持 200。请帮助我如何执行点击,直到所有评论都已加载。任何帮助将不胜感激。这是我的代码
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
options = webdriver.FirefoxOptions()
options.add_argument('start-maximized')
browser = webdriver.Firefox(executable_path='./drivers/geckodriver')
browser.maximize_window()
url = 'https://www.instagram.com/p/CKCVIu2gDgn'
browser.get(url)
browser.implicitly_wait(10) #wait for 10 sec
load_more = browser.find_element(By.XPATH,'/html/body/div[1]/section/main/div/div[1]/article/div[3]/div[1]/ul/li/div/button/span').click()
解决方案
对于这样的事情,您可能想要使用 Selenium 的excute_script
功能,它基本上可以让您在网页上执行 Javascript。
以下 Javascript 代码将在评论中找到该按钮并单击它。
document.querySelector("button.dCJp8.afkep").click()
对于这样的壮举,您不希望使用 Selenium 来单击它,因为 Selenium 试图尽可能地模仿人类行为。在这种情况下,Selenium 会尝试找到该按钮,如果它在页面上不可见(即您需要滚动才能找到它),它将引发异常。
以下是您可以在程序中使用的一行 Python 代码来单击加载更多按钮。
driver.execute_script("document.querySelector('button.dCJp8.afkep').click()")
顺便说一句,我假设这个圆形的圆形加号按钮是点击目标。
推荐阅读
- java - 弹性搜索中的别名用例
- typescript - Jest 测试失败,ENOENT 没有这样的文件或目录(参考规范文件本身)
- android - 如何通过单击菜单项将一个片段转到另一个片段
- c++ - 使用可变参数模板实现类型列表替换操作
- python - TypeError: __init__() missing 1 required positional argument: ,我该如何解决这个问题?
- python-3.x - 如何在我的 Python 脚本中针对此错误进行调整和调试?
- r - dplyr::tally 与因素和字符
- r - 如果行包含匹配项,则为行中的每个元素添加值
- javascript - bootstraps4下拉按钮中的日历-如果用户单击日历,如何使下拉菜单保持打开状态
- node.js - 如何使用 NODE_ENV 选择连接哪个数据库?