C# Selenium Click()不';加载ChromeOptions时不工作

C# Selenium Click()不';加载ChromeOptions时不工作,c#,selenium,selenium-chromedriver,C#,Selenium,Selenium Chromedriver,我正在学习selenium,这是我的代码(我在谷歌上搜索了好几个小时,这是我第一次找不到任何问题的答案,所以这是我的第一个问题)。它启动一个Chrome浏览器,进入www.google.hr,在搜索栏中键入搜索内容,按enter键,然后将有机搜索和广告搜索结果保存在WebPageObject中,然后单击下一页按钮,然后重复该过程。问题是,如果我实例化driver=new ChromeDriver(),这段代码就可以工作;但在本例中不使用driver=new ChromeDriver(选项);。因

我正在学习selenium,这是我的代码(我在谷歌上搜索了好几个小时,这是我第一次找不到任何问题的答案,所以这是我的第一个问题)。它启动一个Chrome浏览器,进入www.google.hr,在搜索栏中键入搜索内容,按enter键,然后将有机搜索和广告搜索结果保存在WebPageObject中,然后单击下一页按钮,然后重复该过程。问题是,如果我实例化driver=new ChromeDriver(),这段代码就可以工作;但在本例中不使用driver=new ChromeDriver(选项);。因此,使用构造函数中的选项,它将转到第一个搜索结果页面,并将同一页面保存3次。在调试模式下,我观看了,在WPO中有IWebElement下一个页面按钮,带有正确的URL和所有内容

public static IWebDriver driver;
List<WebPageObject> WPOList = new List<WebPageObject>();
private void Form1_Load(object sender, EventArgs e)
{
    ChromeOptions options = new ChromeOptions();
    options.AddArguments("user-data-dir=C:/Users/Smirglpapir/AppData/Local/Google/Chrome/User Data");
    options.AddArguments("--start-maximized");
    driver = new ChromeDriver(options);
    driver.Navigate().GoToUrl("http://www.google.hr");
    IWebElement seacrhBarElement = driver.FindElement(By.Name("q"));
    seacrhBarElement.SendKeys("What is the purpouse of life");
    seacrhBarElement.SendKeys(OpenQA.Selenium.Keys.Enter);
    for (int i = 0; i < 3; i++)
    {
        Thread.Sleep(4000); // this fixes million errors
        WebPageObject WPO = new WebPageObject(); // Saves 
        WPOList.Add(WPO);
        Thread.Sleep(500);
        WPO.nextButton.Last().Click(); // last because it clicks the previous button . 
    }

    class WebPageObject
    {
        public string URL { get; set; }
        public List<IWebElement> nextButton { get; set; }
        public List<string> organicSearchResults { get; set; }
        public List<string> stText { get; set; }

        private List<IWebElement> organicSRElementList = new List<IWebElement>(); 
        public WebPageObject()
        {
            //gets the next button
            nextButton = Form1.driver.FindElements(By.Id("pnnext")).ToList();
            // saves the href
            URL = nextButton.Last().GetAttribute("href");
            // saves the IWebelements of organic seacrh results
            organicSRElementList = Form1.driver.FindElements(By.ClassName("rc")).ToList();
            // stores searchresults in organicSearchResults property (List<string>)
            SaveSearchResults();            
        }

        private void SaveSearchResults()
        {
            stText = new List<string>();
            organicSearchResults = new List<string>();
            foreach (IWebElement IwebEl in organicSRElementList)
            {
                organicSearchResults.Add(IwebEl.Text);
                stText.Add(IwebEl.FindElement(By.ClassName("st")).Text);
            }
        }
    }
}
options.AddArguments("--user-data-dir=C:\\Users\\Smirglpapir\\AppData\\Local\\Google\\Chrome\\User Data\\John_Doe");

它保持在同一页上

我找到了一个解决方案:代替

options.AddArguments("--user-data-dir=C:\\Users\\Smirglpapir\\AppData\\Local\\Google\\Chrome\\User Data");
options.AddArguments("--user-data-dir=C:\\Users\\Smirglpapir\\AppData\\Local\\Google\\Chrome\\User Data\\John_Doe");
您只需在用户数据之后添加John_Doe,如下所示:

options.AddArguments("--user-data-dir=C:\\Users\\Smirglpapir\\AppData\\Local\\Google\\Chrome\\User Data\\John_Doe");

chrome将在该动作中自动为您创建一个配置文件。我真的不知道为什么它不能与默认配置文件一起工作

webgeobject
的代码在这里很有用。谢谢,对不起,我是新手
options.AddArguments("--user-data-dir=C:\\Users\\Smirglpapir\\AppData\\Local\\Google\\Chrome\\User Data\\John_Doe");