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

如何使用Selenium WebDriver切换网站的国家/地区选项

解决Selenium切换Gucci网站国家/地区的问题

问题分析

你的代码存在几个关键问题,导致无法正常触发国家选择面板并切换地区:

  • 等待元素时仅检查“存在性”,未确保元素处于可点击状态
  • 选择美国地区的代码存在语法错误,缺少核心的.until()方法
  • 未考虑元素被遮挡的情况,可能导致点击失效

修复后的完整代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By 
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
import logging
import time

# 调整日志级别,减少冗余输出
logging.getLogger('urllib3').setLevel(logging.WARNING)
logging.getLogger('selenium').setLevel(logging.WARNING)

# 配置Chrome浏览器选项
chrome_options = webdriver.ChromeOptions()
# chrome_options.add_argument('--headless')  # 需要无头模式时取消注释
# chrome_options.add_argument('--no-sandbox')
# chrome_options.add_argument('--disable-dev-shm-usage')

# 启动浏览器并访问Gucci南非站点
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=chrome_options)
driver.get("https://www.gucci.com/za/en_gb/")

try:
    # 等待隐私同意按钮可点击并点击
    consent_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, 'onetrust-accept-btn-handler'))  
    )
    consent_button.click()

    # 等待国家选择按钮可点击,打开地区选择面板
    south_africa_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//button[.//span[text()='South Africa']]"))
    )
    # 若按钮被遮挡,启用下面一行用JavaScript强制点击
    # driver.execute_script("arguments[0].click();", south_africa_button)
    south_africa_button.click()

    # 等待美国地区选项可点击并选择
    us_store = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, '//a[.//span[text() = "United States"]]'))
    )
    us_store.click()

    # 可选:等待页面跳转加载完成
    time.sleep(3)

except Exception as e:
    print(f"发生错误: {e}")
finally:
    driver.quit()

核心修复说明

  • 替换等待条件:用element_to_be_clickable替代presence_of_element_located,确保元素不仅存在,还处于可交互状态
  • 修复语法错误:为选择美国地区的代码补充.until()方法,这是WebDriverWait的核心调用逻辑
  • 增加备选点击方案:如果按钮被页面元素遮挡,使用JavaScript执行点击操作绕过前端交互限制
  • 添加加载等待:国家切换后页面会重载,可选的sleep确保页面跳转完成

内容的提问来源于stack exchange,提问作者vu223

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:12:08