当前位置: 首页 > wzjs >正文

龙岩公司做网站做企业网站 长春

龙岩公司做网站,做企业网站 长春,最大的高仿手表网站,全球速卖通买家版文章目录 C#自动化测试滚动条操作语法与实战总结一、基础操作语法速查1. 滚动控制核心方法2. 滚动条位置获取 二、核心方法对比表三、实战场景代码模板场景1:动态加载页面分步滚动场景2:元素可见性验证(显式等待)场景3&#xff1a…

文章目录

  • C#自动化测试滚动条操作语法与实战总结
    • 一、基础操作语法速查
      • 1. 滚动控制核心方法
      • 2. 滚动条位置获取
    • 二、核心方法对比表
    • 三、实战场景代码模板
      • 场景1:动态加载页面分步滚动
      • 场景2:元素可见性验证(显式等待)
      • 场景3:避开固定导航栏遮挡
    • 四、兼容性与最佳实践
      • 1. 万能兼容写法(解决不同浏览器差异)
      • 2. 性能优化技巧
    • 五、快速记忆口诀

C#自动化测试滚动条操作语法与实战总结

一、基础操作语法速查

1. 滚动控制核心方法

// 滚动到页面底部(常用)
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("window.scrollTo(0, document.body.scrollHeight);");// 滚动到指定坐标(X=0,Y=1000像素)
js.ExecuteScript("window.scrollTo(0, 1000);");// 相对当前位置滚动(向下500像素)
js.ExecuteScript("window.scrollBy(0, 500);");// 滚动到元素可见区域(自动定位目标元素)
IWebElement targetElement = driver.FindElement(By.Id("target"));
js.ExecuteScript("arguments[0].scrollIntoView();", targetElement);

2. 滚动条位置获取

//获取滚动条高度
var h1 = js.ExecuteScript("let ss = document.documentElement.scrollTop; return ss;");//512
var h2 = js.ExecuteScript("let ss = window.scrollY; return ss;");
var h3 = js.ExecuteScript("let ss = window.pageYOffset; return ss;");// 获取垂直滚动距离(3种兼容写法)
int scrollY1 = (int)js.ExecuteScript("return window.scrollY;");          // 现代浏览器
int scrollY2 = (int)js.ExecuteScript("return window.pageYOffset;");      // 等同于scrollY
int scrollY3 = (int)js.ExecuteScript("return document.documentElement.scrollTop;"); // 标准模式// 获取文档总高度(兼容不同浏览器)
int totalHeight = (int)js.ExecuteScript(@"return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
");

二、核心方法对比表

方法名称作用描述典型用法示例兼容性说明
scrollTo(x, y)绝对定位滚动(X/Y坐标)js.ExecuteScript("window.scrollTo(0, 500);")所有浏览器
scrollBy(dx, dy)相对当前位置滚动(偏移量)js.ExecuteScript("window.scrollBy(0, -100);")所有浏览器
scrollIntoView()滚动到元素可见区域(居中/顶部/底部)js.ExecuteScript("arguments[0].scrollIntoView(true);", element)现代浏览器(IE9+)
document.body.scrollHeight文档总高度(内容高度)js.ExecuteScript("return document.body.scrollHeight;")需结合documentElement兼容

三、实战场景代码模板

场景1:动态加载页面分步滚动

// 每次滚动1/2视口高度,触发无限滚动(最多10次)
for (int i = 0; i < 10; i++) {// 获取当前视口高度int viewportHeight = (int)js.ExecuteScript("return window.innerHeight;");js.ExecuteScript($"window.scrollBy(0, {viewportHeight / 2});"); // 滚动半屏Thread.Sleep(800); // 等待异步加载(根据实际情况调整)
}

场景2:元素可见性验证(显式等待)

using OpenQA.Selenium.Support.UI;// 等待元素完全可见(自定义条件)
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(d => {IWebElement element = d.FindElement(By.Id("hidden-element"));// 获取元素在视口内的位置var rect = (Dictionary<string, object>)js.ExecuteScript(@"var el = arguments[0], rect = el.getBoundingClientRect();return { top: rect.top, bottom: rect.bottom };", element);// 元素顶部≥0且底部≤视口高度则为可见return (double)rect["top"] >= 0 && (double)rect["bottom"] <= d.Manage().Window.Size.Height;
});

场景3:避开固定导航栏遮挡

// 滚动时预留100px安全距离(适用于顶部固定导航栏)
js.ExecuteScript(@"var el = arguments[0], rect = el.getBoundingClientRect();window.scrollTo(0, rect.top - 100); // 向上调整100px
", targetElement);

四、兼容性与最佳实践

1. 万能兼容写法(解决不同浏览器差异)

// 兼容所有浏览器的滚动位置获取
int scrollTop = (int)js.ExecuteScript(@"return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
");// 文档总高度安全计算(处理DOCTYPE差异)
int fullHeight = (int)js.ExecuteScript(@"return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight);
");

2. 性能优化技巧

  • 合并JS执行:将多个滚动相关操作写入同一个脚本(减少通信开销)
    js.ExecuteScript(@"window.scrollTo(0, 500); var height = document.body.scrollHeight; return height;
    ");
    
  • 使用相对滚动:优先scrollBy()处理连续滚动场景,避免重复计算绝对坐标
  • 显式等待替代Sleep:使用WebDriverWait动态等待,避免固定延迟影响效率

五、快速记忆口诀

  • 滚动到底用scrollTo(0, bodyHeight)
  • 元素定位找scrollIntoView()
  • 相对滚动选scrollBy(dx, dy)
  • 高度获取记兼容(pageYOffset/scrollTop/scrollY

通过以上代码模板和场景示例,可快速掌握C#自动化测试中滚动条操作的核心语法,适用于WebUI测试中的动态内容处理、元素可见性验证等常见场景。

http://www.dtcms.com/wzjs/815565.html

相关文章:

  • 网上购物网站开发报价给公司做网站和公众号需要多少钱
  • 杭州购物网站建设白山市住房和建设局网站
  • 河北省香河县建设局网站修改wordpress编辑器
  • 电商网站与企业网站区别网站建设与推广公司
  • 网络营销网站推广的基本策略国外网站众筹怎做
  • 在线做图表的网站网站分析内容
  • 网站怎么百度收录福田欧曼前四后八新车报价
  • 怎么上传做 好的网站吗拓者设计吧首页
  • 下拉框代码自做生成网站网站后台报表统计系统
  • 高师本科化学实验教学体系建设与创新型人才培养 教学成果奖申报网站推广赚钱的软件有哪些
  • 怎么建设网站数据库装修设计公司哪家
  • 设计吧 网站网站建设费归入长期待摊费用
  • 如何让订阅号菜单做微网站动漫制作专业调研目的
  • 网站推广的方法有哪些潍坊住房公积金
  • 网页设计与网站组建电商网站服务器
  • 合肥的房产网站建设dw网页制作表单
  • 做网站与网店运营网站积分解决方案
  • 商务网站的分类网络组建设计与方案
  • 产品网站建设方案外包网站开发多少钱
  • 视频网站开发步骤wordpress 正在执行例行维护
  • 盐城市城镇化建设投资集团网站aspcms网站模板
  • 外包网站开发多少钱html网页制作动态效果
  • 网站标题做参数青岛网站设计公司
  • wordpress 导购站模板一家公司做两个网站吗
  • 网站建设开发费会计分录公司网页设计流程
  • 传统生意转型做那个网站好新建网站怎么做优化
  • u盘做网站国和建设集团网站
  • 阿里云网站备案要多久精选微信网站建设
  • 南宁网站建设优势青岛网站制作费用
  • 万网一台虚拟主机做多个网站开封网站设计价格