Selenium c # - очистка кеша и просмотр данных - PullRequest
0 голосов
/ 03 ноября 2019

В моем тестовом скрипте у меня есть селен, чтобы открыть страницу настроек Chrome. На этой странице я хочу, чтобы она выбрала кнопку «Очистить данные».

    driver.FindElement(By.CssSelector("* /deep/ #clearBrowsingDataConfirm"));

Я получаю сообщение о том, что элемент не найден. Я пытался использовать только с "ID", а также. Есть ли другой способ сделать это.

1 Ответ

0 голосов
/ 04 ноября 2019

Эту кнопку действительно сложно достать, потому что полимер. Попробуйте это, у меня это работает.

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace Selenium_test
{
    class Program
    {
        static IWebDriver driver;

        static void Main(string[] args)
        {
            driver = new ChromeDriver();
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
            driver.Navigate().GoToUrl("chrome://settings/clearBrowserData");

            IWebElement root1 = driver.FindElement(By.CssSelector("settings-ui"));
            IWebElement shadowRoot1 = expandRootElement(root1);
            IWebElement root2 = shadowRoot1.FindElement(By.CssSelector("settings-main"));
            IWebElement shadowRoot2 = expandRootElement(root2);
            IWebElement root3 = shadowRoot2.FindElement(By.CssSelector("settings-basic-page"));
            IWebElement shadowRoot3 = expandRootElement(root3);
            IWebElement root4 = shadowRoot3.FindElement(By.CssSelector("settings-section > settings-privacy-page"));
            IWebElement shadowRoot4 = expandRootElement(root4);
            IWebElement root5 = shadowRoot4.FindElement(By.CssSelector("settings-clear-browsing-data-dialog"));
            IWebElement shadowRoot5 = expandRootElement(root5);
            IWebElement root6 = shadowRoot5.FindElement(By.CssSelector("#clearBrowsingDataDialog"));
            IWebElement root7 = root6.FindElement(By.CssSelector("cr-tabs[role='tablist']"));

            root7.Click();

            IWebElement clearDataButton = root6.FindElement(By.CssSelector("#clearBrowsingDataConfirm"));

            clearDataButton.Click();
        }

        private static IWebElement expandRootElement(IWebElement element)
        {
            return (IWebElement)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].shadowRoot", element);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...