c#Selenium单击匹配结果

时间:2020-08-29 09:15:30

标签: c# selenium-webdriver

在youtube上搜索后,我想根据结果单击与频道名称匹配的视频,但是我进行了频道匹配,但是我可以单击频道,而不是视频。我想要频道名称或网址匹配时,将打开其视频。

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

1 个答案:

答案 0 :(得分:0)

我检查了您的代码并运行了它,因此您想打开与您的频道名称匹配的视频,对吗? 因此,您需要先选择与您的频道名称匹配的链接,然后在下面的代码中放置该链接。

ZORDER

代替

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