selenium 的滑动问题

2016-08-22 14:22:42 +08:00
 soulmine
请问一下 如果用 selenium 控制滑条用 driver.execute_script("window.scrollTo(0,1000)")这个可以实现
但假如有个网站有 1000000 的像素长度 怎么办 也没法用 for 语句 总不能写 1000 行这个吧
一次性划到 10000000 长度的话,会不会被 ban 了 然后由于是动态加载的,一次性话恐怕没那么快能读取出来 所以有什么好的解决方法么
3652 次点击
所在节点    Python
16 条回复
jason52
2016-08-22 15:46:18 +08:00
极验证?
soulmine
2016-08-22 16:04:34 +08:00
@jason52 这是什么?能大概说一下么
skydiver
2016-08-22 16:35:36 +08:00
为什么不能用 for 语句?没懂
soulmine
2016-08-22 17:23:01 +08:00
@skydiver driver.execute_script("window.scrollTo(0,1000)" 这个是把 window.scrollTo(0,1000)当作 str 来运行的啊 在 oython 里面运行 js 脚本的 你上面写 for i in range 底下就会输出 window.scrollTo(0,i) 这不是引用啊.....
skydiver
2016-08-22 17:24:40 +08:00
@soulmine 你不会自己拼字符串么……好笨……
FrankFang128
2016-08-22 17:33:17 +08:00
这种像素高度的页面 没几个人有耐心等待加载完
soulmine
2016-08-22 17:52:35 +08:00
@skydiver 你是说自己拼 js 字符串么....
soulmine
2016-08-22 17:53:08 +08:00
@FrankFang128 没加载完就继续往下拉 没问题么?
soulmine
2016-08-22 17:56:48 +08:00
@FrankFang128 试了下 拉到第一次加载中就停住了 所以一次性拉完不现实啊
skydiver
2016-08-22 17:58:18 +08:00
@soulmine 是啊……
soulmine
2016-08-22 18:34:52 +08:00
@skydiver 嗯 我自己找到方法了 也多谢你了
kisnows
2016-08-22 21:01:39 +08:00
可以执行 js 语句并拿到当前页面的长度,知道了页面高度,下面就很好半了。
soulmine
2016-08-22 23:08:36 +08:00
@kisnows 其实主要不是高度的问题 是我在纠结没法一次性拉到底的问题 后来我想到可以用 for 循环用 scroolby 拉就好了
kisnows
2016-08-22 23:15:24 +08:00
@soulmine 你只要拿到了页面整体的高度,那么就可以一次拉到底了啊。
```javascript
driver.executeScript(`document.body.scrollHeight`)
.then(top => {
windowHeight = top
js = `window.scrollTo(0,${windowHeight*1.1})`
driver.executeScript(js)
})
```
大致就是这么个意思。
soulmine
2016-08-23 00:02:47 +08:00
@kisnows 呃 是动态刷新的了啦 就是那个评论加载中那种意味 没刷新出来没法拉的啊
kisnows
2016-08-23 09:27:20 +08:00
@soulmine 哦,这样啊。那就只能时时检测了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/300938

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX