遇到一个奇怪的下拉按钮互动问题

0 投票
1 回答
23 浏览
提问于 2025-04-12 06:53

问题是,当我点击按钮时,会出现一个下拉菜单,但选项元素在DOM中不可见。在这种情况下,我该如何解决这个问题呢?这个网站是:https://www.pump.fun/board。在这里你可以看到有一个名为“排序:提升顺序”的按钮。我也附上了一张图片。请问我该如何用selenium从中选择一个选项?我也愿意尝试其他可以使用的技术。非常感谢你的时间。这里是图片

1 个回答

0

首先,你需要找到一个按钮,这个按钮上写着“我准备好开始了”。找到这个按钮后,点击它,这样就可以关闭加载页面时出现的对话框。接下来,找到对应排序下拉菜单的按钮,并点击它。然后,识别出所有显示的排序选项。

接着,定义一个变量来表示你想选择的排序选项,比如“sort: 市值”。然后,逐个查看所有可用的排序选项,点击与定义的选项匹配的那个。最后,一旦选择了想要的选项,就跳出这个循环。

下面的代码可以实现这个功能。

import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from webdriver_manager.chrome import ChromeDriverManager

# Initialize WebDriver
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.implicitly_wait(10)

url = "https://www.pump.fun/board"
driver.get(url)
wait = WebDriverWait(driver, 20)

pump = driver.find_element(By.XPATH, "//button[text()[contains(.,'ready to pump')]]")
pump.click()
button = driver.find_element(By.XPATH, "//span[text()='sort: bump order']/..")
wait.until(EC.element_to_be_clickable(button))
button.click()
options = driver.find_elements(
    By.XPATH, "//div[@role='option']/span[contains(text(),'sort')]"
)

optionToSelect = "sort: market cap"

for option in options:
    text = option.text
    if text == optionToSelect:
        option.click()
        break

driver.quit()

撰写回答