我可以使用iwebdriver.findElement()查询找到img标签。图片包含验证码。 我也得到src属性,其中包含图像的url但是当我打开它时它不起作用它给我404错误。
这是我正在寻找的img标签,我需要它的有效图像路径。
{img src =“https://EU1.client.hip.live.com/GetHIPData?hid=EU1.d3f00459fcb444fc8efb402f3c2dc237&fid=bbc4f6c344e7434c9b712c2d80f7268c&id=274850&type=visual&hdid=0&rnd=1798e82f1c7d4d51922f1a58c03c4d74” style =“display:inline; width:218px; height:48px;” ID = “wlspispHIPBimg05f4e37f6e1bc431d8c335e2d169a0f440”}
// Assuming webdriver is set and running
IWebdriver _driver=new firefoxdriver(capabilities);
_driver.Navigate().GoToUrl("http://www.bing.com/toolbox/submit-site-url");
IWebElement img_tag = _driver.FindElement(By.CssSelector("img[style='display: inline; width: 218px; height: 48px;']"));
// Now i have the entire img tag required which contains a image.
string source_path=img_tag.GetAttribute("src");
// Now i have src url of image. but it does not show the image when i go to this source path. This is the relative path of the image i think.
答案 0 :(得分:1)
我打开了您要访问的页面。因为你正试图获取验证码图像。您无法从验证码图像源获取图像。
您必须获取页面的屏幕截图并裁剪验证码图像。 不要使用宽度和高度的css选择器。有些页面是响应式的,它会给你带来麻烦。改为使用XPath。
public Image GetCaptchaImage()
{
Image imgCap = null;
try
{
var arrScreen = driver.GetScreenshot().AsByteArray;
using (var msScreen = new MemoryStream(arrScreen))
{
var bmpScreen = new Bitmap(msScreen);
var cap = driver.FindElement(By.XPath("//div[@id='ispHIPHIP']//img"));
var rcCrop = new Rectangle(cap.Location, cap.Size);
imgCap = bmpScreen.Clone(rcCrop, bmpScreen.PixelFormat);
}
}
catch
{
}
return imgCap;
}