【问题标题】:How to take reCaptcha image in selenium C#如何在 selenium C# 中获取 reCaptcha 图像
【发布时间】:2019-07-24 00:26:22
【问题描述】:

当我尝试在 selenium 中获取 reCaptcha v2 图像时,我得到 no such this element,因为该元素不在主页中

那么如何在 selenium 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, "");
                }
            }

【问题讨论】:

  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。请参阅How to Ask 页面以获得澄清此问题的帮助。

标签: c# selenium recaptcha captcha


【解决方案1】:

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

您假设只有一帧。但是有多个帧

你需要使用

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

【讨论】:

  • 不工作错误:OpenQA.Selenium.NoSuchElementException:'没有这样的元素:无法找到元素:{“方法”:“标签名称”,“选择器”:“iframe [src * ='recaptcha ']"} 另外,当我使用 CssSelector 时出现同样的错误
  • 你为什么使用方法标签名?使用 css 显示错误?
  • 我在 selenium C# CssSelector 中看不到 Css,但问题相同
猜你喜欢
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多