如何使用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
相关产品推荐
相关产品推荐

