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

Selenium C#测试Google时sendKeys失效,如何屏蔽Cookie弹窗?

解决方案

方案1:通过Chrome配置直接跳过Cookie弹窗(推荐)

直接在启动Chrome时设置Cookie偏好,让浏览器自动接受所有Cookie,从根源上避免弹窗出现。修改你的ChromeDriver初始化代码,添加ChromeOptions配置:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using System.Collections.Generic;

namespace Selenium_Automation
{
    class Program
    {
        static void Main(string[] args)
        {
            // 配置Chrome自动接受Cookie,禁用弹窗
            ChromeOptions options = new ChromeOptions();
            options.AddExperimentalOption("prefs", new Dictionary<string, object>
            {
                ["profile.default_content_setting_values.cookies"] = 1, // 1代表允许所有Cookie
                ["profile.block_third_party_cookies"] = false
            });

            // 使用配置启动Chrome
            IWebDriver driver = new ChromeDriver(options);
            driver.Navigate().GoToUrl("https://www.google.com/");

            // 显式等待搜索栏加载完成,避免元素未就绪就操作
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
            IWebElement searchBox = wait.Until(d => d.FindElement(By.Name("q")));

            searchBox.SendKeys("First time beginning automation");
        }
    }
}

方案2:显式等待并处理Cookie弹窗

如果Google调整了弹窗逻辑导致方案1失效,可以显式等待并点击“Accept All”按钮,确保弹窗处理完成后再操作搜索栏:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;

namespace Selenium_Automation
{
    class Program
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://www.google.com/");

            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
            
            // 尝试处理Cookie弹窗,不存在则跳过
            try
            {
                IWebElement acceptBtn = wait.Until(d => d.FindElement(By.XPath("//div[text()='Accept All' or text()='接受全部']")));
                acceptBtn.Click();
            }
            catch (WebDriverTimeoutException)
            {
                // 无弹窗时不执行任何操作
            }

            // 等待搜索栏就绪后输入内容
            IWebElement searchBox = wait.Until(d => d.FindElement(By.Name("q")));
            searchBox.SendKeys("First time beginning automation");
        }
    }
}

核心问题说明

你原来的代码存在两个关键问题:

  1. 没有显式等待,搜索栏可能还未完全加载就执行SendKeys,导致输入无效
  2. Cookie弹窗会抢占页面焦点或遮挡元素,未处理时无法正常与搜索栏交互

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:54:53