使用Selenium点击Instagram保存登录信息弹窗的Not now按钮
Selenium点击Instagram保存登录信息弹窗Not now按钮解决方案
问题原因
你之前定位失败大概率是两个原因:
- 你用的动态类名
yWX7d是Instagram前端框架自动生成的,版本迭代就会变化,稳定性极差 - 固定
time.sleep()等待不可靠,可能元素还没完全渲染完成就执行了查找操作
最优实现方案
优先使用显式等待+文本属性定位,这两个属性是不会随前端更新变化的,稳定性最高。
前置依赖导入(Selenium 3/4通用)
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
替换原代码中点击Not now的部分
# 初始化10秒超时的显式等待 wait = WebDriverWait(driver, 10) # 限定在弹窗范围内查找Not Now按钮,避免匹配到页面其他元素 not_now_btn = wait.until( EC.element_to_be_clickable( (By.XPATH, "//div[@role='dialog']//button[contains(text(), 'Not Now')]") ) ) # 常规点击 not_now_btn.click() # 若常规点击报元素拦截错误,替换成JS强制点击即可 # driver.execute_script("arguments[0].click();", not_now_btn)
其他说明
- 不要使用固定
time.sleep(),显式等待会在元素加载完成后立刻执行操作,既减少不必要的等待时间,也不会出现元素未加载的报错 - 如果你的Instagram界面是中文,把
Not Now替换成对应的按钮文本暂时不即可
内容的提问来源于stack exchange,提问作者Deepak P
相关产品推荐
相关产品推荐

