示例 - 10行代码在C#中获取页面元素布局信息

本文介绍了一个使用C#和JQuery的简单脚本,该脚本能够精确获取网页上任意元素的位置信息(top,left,width,height),适用于验证码定位与截图场景。通过10行代码实现,分享了具体实现思路及SS中的调用测试方法。

最近研究一个如何在网页定位验证码并截图的问题时, 用SS写了一段C#小脚本可以轻松获取页面任意元素的布局信息 (top, left, width, height). 10行功能代码, 觉得有点用, 现分享给大家:

public dynamic GetRect(JQueryContext node)
{
    node.Attr("pos_top", "0");
    node.Attr("pos_left", "0");
    Default.RunScript(string.Format("var pos = $('{0}').position();$('{0}').attr('pos_top', pos.top);$('{0}').attr('pos_left', pos.left);", node.JQueryExpression));
    return new { 
        top = node.Attr("pos_top"), 
        left = node.Attr("pos_left"), 
        width = node.Css("width"), 
        height = node.Css("height")
    };
}

- 基本思路是利用JQuery获取元素的position, 并临时保存在pos_top和pos_left属性中, 然后用JQuery将这两个属性的值读取出来即可. 

在SS中调用并测试:

public void Run()
{
    Logger.ClearAll();
    Default.Navigate("http://www.gdtsearch.com/products.spiderstudio.codeviewer.htm");
    Default.Ready();
    var node = Default.SelectSingleNode("HTML:eq(0)>BODY:eq(0)>DIV:eq(0)>DIV:eq(1)>DIV:eq(0)>H2:eq(1)");
    var rect = GetRect(node);
    node.Css("background-color", "yellow"); //将元素设为高亮背景
    Logger.Log("top = " + rect.top + "px");
    Logger.Log("left = " + rect.left + "px");
    Logger.Log("width = " + rect.width);
    Logger.Log("height = " + rect.height);
}

运行效果:

 

 

转载于:https://www.cnblogs.com/iamzyf/p/3566658.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值