Selenium:需要放置在网站上的图像文件的有效图像 location/path

Selenium: Need valid image location/path of an image file placed on a website

我可以使用 iwebdriver.findElement() 查询找到 img 标签。图片包含验证码。 我还得到了包含图像 url 的 src 属性,但是当我打开它时它不起作用,它给了我 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.

我打开了您正在访问的页面。当您尝试获取验证码图像时。您将无法从验证码图像源获取图像。

您必须获取页面的屏幕截图并裁剪验证码图像。 不要使用带宽度和高度的 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;
}