代码之家  ›  专栏  ›  技术社区  ›  Dhruv

使用C查找视频是否可用,是否使用Selenium#

  •  1
  • Dhruv  · 技术社区  · 6 年前

    如何使用C#查找视频是否可用?

    IWebDriver driver = new ChromeDriver(@"C:\chromedriver_win32");
    driver.Navigate().GoToUrl("https://www.youtube.com/watch?v=v19-La3pTmU");
    
    var result = driver.FindElement(By.ClassName("reason style-scope ytd-player-error-message-renderer")).Text;
    

    这是我的代码片段,用于查找youtube视频是否可用。如果不可用,我可以访问文本“此视频不可用”如下图所示,但我无法使用代码段访问此文本。

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   undetected Selenium    6 年前

    提取文本的步骤 此视频不可用。 您可以使用以下代码行之一:

    • XPath :

      var result = driver.FindElement(By.XPath("//div[@class='reason style-scope ytd-player-error-message-renderer']")).GetAttribute("innerHTML");
      
    • CSS选择器 :

      var result = driver.FindElement(By.CssSelector("div.reason.style-scope.ytd-player-error-message-renderer")).GetAttribute("innerHTML");
      

    也许你需要 WebDriverWait 结合 ExpectedConditions 具体如下:

    • XPath :

      wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
      var result = wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//div[@class='reason style-scope ytd-player-error-message-renderer']"))).GetAttribute("innerHTML");
      
    • CSS选择器 :

      wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
      var result = wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("div.reason.style-scope.ytd-player-error-message-renderer"))).GetAttribute("innerHTML");