首页 > 解决方案 > 通过 selenium 从 chrome 商店下载扩展

问题描述

我想通过 selenium 从 chrome 商店下载 chrome 扩展程序一切顺利,除了要求确认下载扩展程序的弹出窗口。我试图接受弹出窗口,但没有成功,我正在添加完整的代码,只是缺少接受弹出窗口的部分。

这是我的代码(用c#编写):

    static void WebStoreDownload(string webdriverDirectory)
    {
        WebDriverWait wait;
        ChromeOptions options = new ChromeOptions();     
        options.PageLoadStrategy = PageLoadStrategy.None;
        options.AddArgument("no-sandbox");
        options.SetLoggingPreference(LogType.Driver, LogLevel.All);
        IWebDriver driver = new ChromeDriver(webdriverDirectory, options, TimeSpan.FromMinutes(1));
        driver.Navigate().GoToUrl("https://chrome.google.com/webstore/category/extensions");

        wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
        wait.Until(condition => {
            try
            {
                IWebElement serverTextBox = driver.FindElement(By.Id("searchbox-input"));
                serverTextBox.Clear();
                serverTextBox.SendKeys("malwarebyte");
                serverTextBox.SendKeys(Keys.Enter);
                return true;
            }
            catch (NoSuchElementException)
            {
                return false;
            }
            catch (ElementNotInteractableException)
            {
                return false;
            }
        });

        wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
        wait.Until(condition => {
            try
            {
                IWebElement toClick = driver.FindElement(By.XPath("//*[contains(text(), 'Malwarebytes Browser Guard')]"));
                toClick.Click();

                return true;
            }
            catch (NoSuchElementException)
            {
                return false;
            }catch(ElementNotInteractableException)
            {
                return false;
            }
        });
        Thread.Sleep(3000);
        wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
        wait.Until(condition => {
            try
            {
                IWebElement toClick = driver.FindElement(By.ClassName("g-c-R"));
                toClick.Click();
                return true;
            }
            catch (NoSuchElementException)
            {
                return false;
            }
            catch (ElementNotInteractableException)
            {
                return false;
            }
        });
    }

这是弹出窗口:

在此处输入图像描述

我试过像:

driver.SwitchTo().Alert().Accept();

但它没有用,如何接受弹出窗口?

标签: c#seleniumselenium-webdriverselenium-chromedriver

解决方案


推荐阅读