2017-09-16 79 views
0

當我嘗試在硒中獲得reCaptcha v2圖像時,我沒有這樣的元素! Becoz的元素不在主頁面如何在硒中使用reCaptcha圖像#

所以我怎麼能得到硒在C#中的圖片!

_driver.Navigate().GoToUrl("https://www.google.com/recaptcha/api2/demo"); 

      _driver.SwitchTo().Frame(0); 

      _driver.FindElement(By.Id("recaptcha-anchor")).Click(); 



      Thread.Sleep(5000); 

      _driver.SwitchTo().Frame(0); 

      //To get all images in page 
      IList<IWebElement> images = _driver.FindElements(By.TagName("img")); 

      MessageBox.Show(images.Count.ToString()); 

      string reCaptchaXpath = ""; 

      foreach (var img in images) 
      { 
       if (img.GetAttribute("src").Contains("https://www.google.com/recaptcha/api2/")) 
       { 
        reCaptchaXpath = GenerateXpath(img, ""); 
       } 
      } 
+0

請說明您的具體問題或添加額外的細節,突顯正是你需要的。正如目前所寫,很難確切地說出你在問什麼。請參閱[問]頁面以獲得澄清此問題的幫助。 – JeffC

回答

0

編輯-1

下面的代碼工作正常,我並給出了16個圖像

 ChromeDriver _driver; 
     _driver = new ChromeDriver(); 
     _driver.Url = "https://www.google.com/recaptcha/api2/demo"; 
     Thread.Sleep(5000); 

     _driver.SwitchTo().Frame(_driver.FindElement(By.CssSelector("iframe[src*='recaptcha']"))); 

     _driver.FindElement(By.ClassName("recaptcha-checkbox-checkmark")).Click(); 

     Thread.Sleep(2000); 
     //_driver.SwitchTo().Frame(_driver.FindElement(By.CssSelector("iframe[src*='recaptcha']"))); 

     _driver.SwitchTo().DefaultContent(); 
     _driver.SwitchTo().Frame(_driver.FindElements(By.TagName("iframe"))[1]); 
     images = _driver.FindElements(By.CssSelector("img")); 

     Console.WriteLine(images.Count.ToString()); 

原來的答案

你的問題是下面的語句

_driver.SwitchTo().Frame(0); 

你假設只有一個框架。但也有多個幀

IFrames

您需要使用

_driver.SwitchTo().Frame(_driver.FindElement(By.Css("iframe[src*='recaptcha']"))); 
+0

不工作 錯誤: OpenQA.Selenium.NoSuchElementException:'no such element:Unable to locate element:{「method」:「tag name」,「selector」:「iframe [src * ='recaptcha']」} 另外,當我使用CssSelector時出現同樣的錯誤 –

+0

爲什麼使用方法標籤名?用css顯示錯誤? –

+0

我在硒C中看不到Css# CssSelector但它的問題相同 –