【发布时间】:2013-08-15 15:19:57
【问题描述】:
我有一个代码可以将不断增长的页面滚动到底部(直到无法滚动到底部)。
当它不可能时,它会滚动到顶部并且javascript代码完成。
例如:想象一下 Facebook 上的时间线。
这是一个不断增长的页面,所以我可以一次又一次地滚动它,直到无法滚动(然后我将进入:“BORN”)。
这是我的代码:
while (i < elements.Count)
{
js.ExecuteScript("var timeId = setInterval( function() {
if(window.scrollY<(document.body.scrollHeight-window.screen.availHeight))
window.scrollTo(0,document.body.scrollHeight); else { clearInterval(timeId);
window.scrollTo(0,0); } },5000);");
i++;
}
我只想在setInterval 完成后给i 加1。
我尝试了下一件事:
while (i < elements.Count)
{
object a = js.ExecuteScript("setInterval( function() {
if(window.scrollY<(document.body.scrollHeight-window.screen.availHeight)) {
window.scrollTo(0,document.body.scrollHeight); return '1'}; else {
clearInterval(timeId); window.scrollTo(0,0); return '2'} },5000);");
while (a != '2') {
// do nothing, this while will be ended when we arrived the bottom and
// go back to the top
}
// all the page is loaded
i++;
}
但它不起作用..也许有一种方法可以在不使用设置间隔的情况下越来越多地滚动到底部然后到顶部? (但请记住:这是一个不断增长的页面,当您向下和向下滚动时它会增长..
我该怎么做?
【问题讨论】:
-
已删除 C# 标签 - 它可能在整个项目中使用,但与问题无关。
-
@Moo-Juice 只有字符串是 JS 代码...问题中的其他所有内容都是 C#。
-
@Pluto,它可能是从 C# 生成的,但这表面上都是关于 Javascript 的。
-
绝对是关于 C#,因为您正在与来自 javascript 的 C# 变量进行交互
-
你不能。在执行
setInterval回调的那一刻,while循环已经终止。
标签: c# javascript selenium scroll selenium-webdriver