Selenium:需要放置在网站上的图像文件的有效图像位置/路径

时间:2015-01-10 07:50:35

标签: selenium web captcha

我可以使用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.

1 个答案:

答案 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;
}