You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Selenium定位dekudeals网站隐私政策弹窗的Accept按钮?

问题:定位Dekudeals网站隐私政策弹窗的Accept按钮

目标页面:https://www.dekudeals.com/items/1-crosswords-sudokus-bundle
目标元素:页面弹出的隐私政策弹窗中的Accept按钮(截图:Accept按钮)

已尝试的定位方法

以下是我试过的多种定位实现代码:

  • 直接通过按钮文本定位:
try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable(
        (By.XPATH, "//button[text()='Accept']"))).click()
finally:
    print('Not found :(')
    driver.quit()
  • 通过弹窗内部元素路径定位:
try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable(
        (By.XPATH, "//*[@id='notice']/div[4]/button[2]"))).click()
finally:
    print('Not found :(')
    driver.quit()
  • 通过aria-label属性定位:
try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable(
        (By.XPATH, "//button[@arial-label='Accept']"))).click()
finally:
    print('Not found :(')
    driver.quit()
  • 通过完整类名定位:
try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable(
        (By.CLASS_NAME, "message-component message-button no-children focusable sp_choice_type_11 last-focusable-el"))).click()
finally:
    print('Not found :(')
    driver.quit()
  • 尝试切换到指定iframe后定位:
try:
    WebDriverWait(driver, 10).until(
        EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@name='networknheader13924283968_MOAT_IFRAME']")))
    WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//button[text()='Accept']"))).click()
finally:
    print('Not found :(')
    driver.quit()
  • 切换到根路径iframe后通过类名定位:
try:
    WebDriverWait(driver, 10).until(
        EC.frame_to_be_available_and_switch_to_it((By.XPATH, '/html/iframe')))
    print('done')
    WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CLASS_NAME, "message-component message-button no-children focusable sp_choice_type_11 last-focusable-el"))).click()
finally:
    print('Not found :(')
    driver.quit()
  • 切换到指定ID的iframe后定位:
try:
    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID, 'sp_message_iframe_751684')))
    print('done')
    WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//*[@id='notice']/div[4]/button[2]"))).click()
finally:
    print('Not found :(')
    driver.quit()

完整测试代码

from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

service = Service(executable_path=".../Driver/chromedriver")
driver = webdriver.Chrome(service=service)
driver.get('https://www.dekudeals.com/items/1-crosswords-sudokus-bundle')
try:
    WebDriverWait(driver, 10).until(
        EC.frame_to_be_available_and_switch_to_it((By.XPATH, '/html/iframe')))
    print('done')
    WebDriverWait(driver, 20).until(
        EC.element_to_be_clickable((By.XPATH, "//button[@arial-label='Accept']"))).click()
finally:
    print('Not found :(')
    driver.quit()

请求帮助

我几乎尝试了所有能想到的XPATH、CLASS_NAME定位方式,也尝试了切换iframe的方法,但都未能成功定位并点击Accept按钮。请问正确的定位方式是什么?


内容的提问来源于stack exchange,提问作者Łukasz Zedler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 12:45:34