Appium项目中Chrome浏览器无法滚动的问题求助
嘿,我之前在做Appium操作Chrome的时候也碰到过一模一样的报错!结合你给出的信息,这个问题主要出在两个地方:ChromeDriver和Chrome版本不兼容,或者你用的滚动方式对这个版本的Chrome不友好。给你几个亲测有效的解决方案:
解决方案1:先搞定ChromeDriver和Chrome的版本匹配
这是最可能的原因!你现在用的Chrome是65.0.3325.109,但ChromeDriver却是2.33——这个版本组合完全不兼容!ChromeDriver 2.33只支持Chrome 60-62版本,Chrome 65需要搭配ChromeDriver 2.36或者2.37版本才能正常工作。
具体操作步骤:
- 卸载当前项目或系统里的旧ChromeDriver
- 下载对应版本的ChromeDriver(注意要和你的Windows 10 x86_64系统匹配,选64位安装包)
- 把新的ChromeDriver路径配置到项目的驱动参数里,或者添加到系统PATH环境变量中
解决方案2:更换滚动的实现方式
如果版本匹配后还是有问题,那大概率是你原来的滚动代码在这个版本的Chrome里不支持,试试下面几种替代方案:
方法A:定位元素后用scrollIntoView滚动
找到页面下方的某个可见元素,通过JS让它滚动到视图范围内,这种方法稳定性很高:
// 先定位到页面下方的目标元素,比如底部的按钮、文本等 WebElement targetElement = driver.findElement(By.xpath("你的目标元素XPath")); JavascriptExecutor js = (JavascriptExecutor) driver; // 执行滚动,true表示元素顶部对齐视图顶部 js.executeScript("arguments[0].scrollIntoView(true);", targetElement);
方法B:用TouchAction模拟移动端触摸滚动
因为是Appium操作Chrome(大概率是移动端场景),直接模拟手指滑动的方式更贴合真实操作:
TouchAction touchAction = new TouchAction(driver); // 获取当前窗口的尺寸 Dimension size = driver.manage().window().getSize(); // 计算滑动的起始和结束坐标:从屏幕下半部分滑到上半部分 int startX = size.getWidth() / 2; int startY = (int) (size.getHeight() * 0.8); int endY = (int) (size.getHeight() * 0.2); // 执行滑动动作,中间加1秒等待确保滑动生效 touchAction.press(PointOption.point(startX, startY)) .waitAction(WaitOptions.waitOptions(Duration.ofMillis(1000))) .moveTo(PointOption.point(startX, endY)) .release() .perform();
方法C:直接滚动到页面最底部
如果不需要定位特定元素,只想直接滑到页面底部,可以用这个JS代码:
JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
额外注意事项
- 尽量把你的Appium服务升级到最新稳定版,旧版Appium对高版本Chrome的兼容性也可能存在问题
- 启动Chrome的时候,可以添加
--disable-extensions、--no-sandbox这类参数,避免浏览器扩展或沙箱机制干扰测试操作
内容的提问来源于stack exchange,提问作者Prashant Shekhar
相关产品推荐
相关产品推荐

