如何以编程方式获取网页中图像的渲染尺寸? - javascript

我需要询问网页中的每个img标签,并以其呈现的形式找到其高度和宽度。不是实际的物理图像尺寸。我需要在WinForm应用程序的C#中执行此操作。

例:
http://motherboard.vice.com/read/i-built-a-botnet-that-could-destroy-spotify-with-fake-listens

主图像的物理尺寸为3648x2736。当我的浏览器最大化时,渲染的图像为1000x750。我知道媒体查询和图像调整的大小。此img标签没有width和height属性。
如何使用C#并假定最大媒体查询大小和至少1400宽度的分辨率,使我的应用获得1000x750的大小。

我假设我需要一个Awesomium,CefSharp,EO.Browser或IE Web浏览器控件之类的浏览器控件?不知道哪个人可以做到这一点。我想遍历img标签并获得每个渲染的尺寸,就像打开浏览器并使用开发工具来获取每个图像的计算尺寸一样。与Javascript相比,我更喜欢用C#进行处理。

参考方案

我一直在用Selenium WebDriver进行测试,我认为这是目前的最佳选择

我做了一些测试,它按预期工作,这是测试代码

[TestFixture]
public class TestClass
{
    private FirefoxDriver _driver;

    [SetUp]
    public void Setup()
    {
        _driver = new FirefoxDriver();
        _driver.Url = "http://motherboard.vice.com/read/i-built-a-botnet-that-could-destroy-spotify-with-fake-listens";
    }

    [TearDown]
    public void TearDown()
    {
        _driver.Quit();
    }

    [TestCase()]
    public void TestImage()
    {
        IWebElement element = _driver.FindElementByXPath("//img[@class = 'vmp-image' and position() = 1]");

        Assert.IsNotNull(element);

        string width = element.GetCssValue("width");
        string height = element.GetCssValue("height");

        Console.WriteLine("width:  " + width);
        Console.WriteLine("height: " + height);
    }
}

在此测试中,Selenium WebDriver打开Firefox,您可以看到网站正在加载,加载后您可以访问网站的DOM,甚至可以执行Javascript代码,通过XPath,Css,ClassName,TagName等查找元素。 。

还要记住,这是一个浏览器,您应该最大化或指定窗口浏览器的大小,因为该网站可能适合移动设备,因此您可以获得不同的图像大小

您也可以使用Chrome和InternetExplorer here is the documentation

.NET C#Webbrowser填充输入,不带ID或类名 - javascript

我需要在网络浏览器中填写一个输入,但这不起作用。我认为必须使用name属性来完成,但是怎么做呢?foreach (HtmlElement login in webBrowser1.Document.GetElementsByTagName("input")) { if (login.GetAttribute("name"…

获取JavaScript值到C#字符串 - javascript

                        是否可以在C#中执行类似的操作?该值为“ 10/05/2014”string jsValue = javascript("$('#EstimatedStartDate').val()"); 参考方案 您能否更详细地阐明您要做什么。看来您正在尝试从javascript(客户…

ASP.NET-如何更改JSON序列化的方式? - javascript

我正在使用ASP.NET通过以下查询返回Json文件:public ActionResult getTransactionTotals(int itemID) { DBEntities db = new DBEntities(); var query = from trans in db.Transactions // Linq query removed …

在JavaScript中运行方法C# - javascript

打扰一下,我有这种C#asp方法。受保护的无效btnSave_Click(对象发送者,EventArgs e)有谁知道我该如何发送脚本给您?可以办到?。 javascript大神给出的解决方案 是的,那可以做到。为此,您在.aspx.cs页中创建了函数,然后单击保存按钮上的代码将其复制到函数中,然后执行以下步骤。//Call cs method from J…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …