我正在为登录页面编写脚本。但我有一个我想要处理的验证码。
Selenium无法处理验证码。
虽然网站使用验证码的原因相同,所以没有人可以使用任何机器人自动化他们的网站。
您可以要求开发人员为您提供特殊环境,以便绕过验证码功能或在DOM上公开验证码值,这样您就可以在运行时获得验证码的价值。
有一些第三方图书馆的人声称他们也可以自动化验证码,但我从未尝试过并且听说过它们也没有效率。
一些参考文献: - How to read the text from image (captcha) by using Selenium WebDriver with Java
http://www.mythoughts.co.in/2012/11/automatingbreaking-captcha-using.html#.Vt5psdx94x8
大多数验证码解算器都是付费的。验证码中的几个例子解决了:
tesseract
库解决了验证码中的一些简单示例。
在这里,尝试一下我的方法(在c中):
public void GenerateSnapshot(string filePath)
{
IWebDriver driver = new ChromeDriver();
driver.Manage().Window.Maximize(); driver.Navigate().GoToUrl(“your url here”);
var remElement = driver.FindElement(By.Id(“your Captcha Id here”));
Point location = remElement.Location;
var screenshot = (driver as ChromeDriver).GetScreenshot();
using(MemoryStream stream = new MemoryStream(screenshot.AsByteArray))
{
using(Bitmap bitmap = new Bitmap(stream))
{
RectangleF part = new RectangleF(location.X, location.Y, remElement.Size.Width, remElement.Size.Height);
using(Bitmap bn = bitmap.Clone(part, bitmap.PixelFormat))
{
bn.Save(filePath + “CaptchImage.png”, System.Drawing.Imaging.ImageFormat.Png);
}
}
}
//reading text from images
using(var engine = new TesseractEngine(“tessdata path here”, “eng”, EngineMode.Default))
{
Page ocrPage = engine.Process(Pix.LoadFromFile(filePath + “CaptchImage.png”), PageSegMode.AutoOnly);
var captchatext = ocrPage.GetText();
}
}
来源:https://thedotnetlight.wordpress.com/2018/02/16/read-captcha-image-in-selenium-c/