我需要询问网页中的每个img标记,并在呈现的形式中找到它的高度和宽度。而不是实际的物理图像尺寸。我需要在C#中在WinForm应用程序中这样做。
示例:http://motherboard.vice.com/read/i-built-a-botnet-that-could-destroy-spotify-with-fake-listens
主要图像的物理尺寸为3648x2736。当我的浏览器最大化时,呈现的图像是1000x750。我知道媒体查询和图像调整是由于他们。这个img标签没有宽度和高度属性。如何让我的应用程序获得1000x750大小使用C#,并假设最大的媒体查询大小和分辨率至少1400宽度。
我假设我需要一个浏览器控件,如乌索溴铵、CefSharp、EO.Browser或IE控件?不知道哪一个能做到。我想遍历img标记,并获得每个呈现的img标记的尺寸,就好像我打开了一个浏览器并使用dev工具来获取每个图像的计算维度一样。比起Javascript,我更喜欢在C#中进行这种处理。
发布于 2016-01-07 04:20:07
我一直在用硒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
打开火狐,您可以看到站点加载,加载后您可以访问站点的DOM,甚至可以执行Javascript代码、通过XPath、Css、ClassName、TagName等查找元素.
还请记住,这是一个浏览器,您应该最大化或给窗口的浏览器一个特定的大小,因为网站可能是移动友好的,这样您就可以得到不同的图像大小。
你也可以使用Chrome和InternetExplorer 这是文件
https://stackoverflow.com/questions/34646971
复制相似问题