Selenium c#-清除缓存和浏览数据

Selenium c#-清除缓存和浏览数据,c#,selenium,automation,selenium-chromedriver,C#,Selenium,Automation,Selenium Chromedriver,在我的测试脚本中,我让selenium打开chrome设置页面。在该页面上,我希望它选择“清除数据”按钮 我收到一个错误,说找不到元素。我也试过只使用“ID”这个词。有没有其他方法可以做到这一点 那个按钮真的很难够到,因为聚合物。 试试这个,它对我有用 using System; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; namespace Selenium_test { class Program {

在我的测试脚本中,我让selenium打开chrome设置页面。在该页面上,我希望它选择“清除数据”按钮


我收到一个错误,说找不到元素。我也试过只使用“ID”这个词。有没有其他方法可以做到这一点

那个按钮真的很难够到,因为聚合物。 试试这个,它对我有用

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);
        }
    }
}

因为我是个新手,所以我不能投票给@Lanki-answer。 它就像一个符咒

下面是同一脚本的JAVA版本:

WebElement root1=driver.findElement(By.cssSelector(“设置ui”);
WebElement shadowRoot1=expandRootElement(root1);
WebElement root2=shadowRoot1.findElement(By.cssSelector(“settings main”);
WebElement shadowRoot2=expandRootElement(root2);
WebElement root3=shadowRoot2.findElement(By.cssSelector(“设置基本页面”);
WebElement shadowRoot3=expandRootElement(root3);
WebElement root4=shadowRoot3.findElement(By.cssSelector(“设置部分>设置隐私页面”);
WebElement shadowRoot4=expandRootElement(root4);
WebElement root5=shadowRoot4.findElement(By.cssSelector(“设置清除浏览数据对话框”);
WebElement shadowRoot5=expandRootElement(root5);
WebElement root6=shadowRoot5.findElement(By.cssSelector(“#clearBrowsingDataDialog”);
WebElement root7=root6.findElement(由.cssSelector(“cr选项卡[role='tablist']));
root7.单击();
WebElement clearDataButton=root6.findElement(由.cssSelector(“#clearBrowsingDataConfirm”);
clearDataButton.click();
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);
        }
    }
}