Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#单击匹配结果_C#_Selenium Webdriver - Fatal编程技术网

c#单击匹配结果

c#单击匹配结果,c#,selenium-webdriver,C#,Selenium Webdriver,在youtube上搜索后,我想根据搜索结果点击与频道名称匹配的视频,但我会进行频道匹配,但我可以点击频道,而不是视频。我想要频道名称或Url当它匹配时,它的视频被打开 var chromeDriverService = ChromeDriverService.CreateDefaultService(); chromeDriverService.HideCommandPromptWindow = true; ChromeOptions options = new ChromeOptions()

在youtube上搜索后,我想根据搜索结果点击与频道名称匹配的视频,但我会进行频道匹配,但我可以点击频道,而不是视频。我想要频道名称或Url当它匹配时,它的视频被打开

var chromeDriverService = ChromeDriverService.CreateDefaultService();
chromeDriverService.HideCommandPromptWindow = true;

ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference("profile.default_content_setting_values.images", 2);
options.AddArgument("start-maximized");
options.AddArgument("disable-infobars");
options.AddArgument("--disable-extensions");
            
var driver = new ChromeDriver(chromeDriverService, options);
driver.Navigate().GoToUrl("https://www.youtube.com/");

       
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromMilliseconds(1500));            
var elementsWithSearchID = wait.Until((driver) => driver.FindElements(By.Id("search")));
var search = elementsWithSearchID.Where(e => e.TagName == "input").FirstOrDefault();

search.SendKeys("Hello\n");
Thread.Sleep(2000);
IWebElement channel = driver.FindElement(By.XPath("//*[@id=\"text\"]/a[contains(@href, '/channel/UCV1Nlv5cOSB--hEjRVo4mUA')]"));
channel.Click();

我检查了你的代码并运行了它,所以你想打开与你频道名称匹配的视频,对吗? 因此,您需要首先获取与频道名称匹配的链接,然后输入下面的代码

driver.FindElement(By.XPath("//a[@href='/watch?v=VKIiCOZ2Eo4']")).Click();
而不是

IWebElement channel = driver.FindElement(By.XPath("//*[@id=\"text\"]/a[contains(@href, '/channel/UCV1Nlv5cOSB--hEjRVo4mUA')]"));

我检查了你的代码并运行了它,所以你想打开与你频道名称匹配的视频,对吗? 因此,您需要首先获取与频道名称匹配的链接,然后输入下面的代码

driver.FindElement(By.XPath("//a[@href='/watch?v=VKIiCOZ2Eo4']")).Click();
而不是

IWebElement channel = driver.FindElement(By.XPath("//*[@id=\"text\"]/a[contains(@href, '/channel/UCV1Nlv5cOSB--hEjRVo4mUA')]"));

嗯,如果我的视频在列表的底部,也就是在滚动的底部,它将失败。而且,您提供的代码不仅与频道匹配。它只是直接找到那个视频。我想先匹配频道,然后单击视频。我是c#新手,如果你能帮我,我将不胜感激。好吧,如果我的视频在列表的底部,也就是说,在滚动的底部,它将失败。而且,您提供的代码不仅与频道匹配。它只是直接找到那个视频。我想先匹配频道,然后单击视频。我是c#的新手,如果你能帮忙,我将不胜感激。