如何使用 Selenium Python 点击 binance.com 网站上的分页元素

问题描述 投票:0回答:2

无法使用 Selenium python 单击找到的元素。我正在尝试抓取链接:

https://www.binance.com/en/futures-activity/leaderboard/futures

我已经成功抓取了第一页,但是,我正在尝试进入第 2 页。为此,我使用以下命令,但它不起作用。

a = driver.find_element(By.XPATH,'//*[@id="page-2"]')
a.click()

奇怪的是,当我打印(

a
)时它找到了元素,但不幸的是我无法点击它。 打印(
a
) 答案:

<selenium.webdriver.remote.webelement.WebElement (session="9dbf9eafdc008e627b8b13face212b45", element="454a2787-33df-4067-b93a-8b73e259bebb")>
selenium-webdriver xpath click webdriverwait js-scrollintoview
2个回答
0
投票

使用JavaScript的

execute_script
方法执行
click()
动作。

更改您的代码如下:

a = driver.find_element(By.XPATH, '//*[@id="page-2"]')
driver.execute_script("arguments[0].click();", a)

完整的工作代码:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.binance.com/en/futures-activity/leaderboard/futures')
driver.maximize_window()
driver.find_element(By.ID, 'onetrust-accept-btn-handler').click()
a = driver.find_element(By.XPATH, '//*[@id="page-2"]')
driver.execute_script("arguments[0].click();", a)

结果:


0
投票

要点击 Page 2,您首先需要

scrollIntoView()
元素,然后为 element_to_be_clickable() 引入 WebDriverWait 并且您可以使用以下任一 定位器策略 :

  • 使用 XPATH

    id
    属性:

    driver.get("https://www.binance.com/en/futures-activity/leaderboard/futures")
    driver.execute_script("return arguments[0].scrollIntoView(true);", WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//button[@id='page-2']"))))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@id='page-2']"))).click()
    
  • 使用 XPATH

    aria-label
    属性:

    driver.get("https://www.binance.com/en/futures-activity/leaderboard/futures")
    driver.execute_script("return arguments[0].scrollIntoView(true);", WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//button[@aria-label='Page number 2']"))))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@aria-label='Page number 2']"))).click()
    
  • 使用 XPATH

    text()

    driver.get("https://www.binance.com/en/futures-activity/leaderboard/futures")
    driver.execute_script("return arguments[0].scrollIntoView(true);", WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//button[@data-bn-type='button' and text()='2']"))))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@data-bn-type='button' and text()='2']"))).click()
    
  • 浏览器快照:

binance

  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
© www.soinside.com 2019 - 2024. All rights reserved.