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

Python Selenium定位点击元素失败:原可用代码突发失效求助

Shopify网站Selenium抓取商品总价时无法定位结账按钮问题

我正在使用Selenium从Shopify搭建的网站抓取多款商品的总价差额(包含税费和运费),目前已成功实现将商品加入购物车的功能,流程为:将选中商品加入购物车,进入结账页面,更新城市、邮编和州信息,最后在确认页面获取总价。

最初代码能成功进入结账页面,但无法定位需要输入内容的元素;在解决该问题的过程中,代码突然完全无法定位结账按钮。

经排查,我怀疑问题可能出在需要切换frame——点击购物车按钮后会弹出侧边栏,结账按钮就在该侧边栏中,但查看HTML并未找到frame标签。我已尝试使用time.sleep()等待加载、滚动到元素可见区域,均无效。点击购物车后会有弹窗遮挡界面。

我的代码

url = 'https://americanbarbell.com/products/american-barbell-cast-kettlebell'
index_list = [('4KG',1),('12KG',4)]
smallerlist = ['4KG', '12KG']
path = "C:\Program Files (x86)\msedgedriver.exe"
driver = webdriver.Edge(path)
driver.get(url)
time.sleep(1)

driver.refresh()  # 页面加载会弹出弹窗,用刷新作为关闭弹窗的临时方案

time.sleep(1)

driver.execute_script("window.scrollTo(0, 550)") 

for item in smallerlist:
    for tup in index_list:
        if item == tup[0]:
            n = tup[-1]
    
    time.sleep(2)
    
    driver.find_element(By.XPATH, '//*[@id="product_form_377205240"]/div[2]/div/div/div').click()
    time.sleep(2)
    
    driver.find_element(By.XPATH, f'//*[@id="377205240-weight"]/li[{n}]/div').click()
    
    time.sleep(1)
    
    add_cart = driver.find_element(By.XPATH, '//*[@id="product_form_377205240"]/div[3]/button')
    driver.execute_script("arguments[0].click();", add_cart)
    
    time.sleep(3)
    
    driver.refresh()

    checkout = driver.find_element(By.XPATH,'/html/body/div[2]/div[5]/div[3]/div/form/div[2]/div[2]/div[3]/div[2]').click()

报错信息

Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[2]/div[5]/div[3]/div/form/div[2]/div[2]/div[3]/div[2]"}

尝试过的其他XPATH

/html/body/div[3]/div[5]/div[3]/div/form/div[2]/div[2]/div[3]/div[2]/button

我也曾尝试用XPATH定位弹窗并关闭,但也无法找到元素。代码原本运行正常,毫无预兆地突然失效,猜测初始代码稳定性不足只是侥幸运行。想请教几个问题:

  • 是否需要切换frame?
  • 是否需要更长等待时间?
  • 元素是否被弹窗遮挡?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:31:00