Selen:Selen: Przewiń do końca strony
Jestem nowy WebDriverJS. Próbowałem tego podejścia w Javie.
Long repaeted = 0l, scrollHeight = 0l, returnHeight = 0l;
while(true){
if (repaeted == 0) {
returnHeight = (Long) jse.executeScript("var scroll =document.documentElement.scrollHeight;window.scrollTo(0, scroll); return scroll;");
System.out.println("Height : "+scrollHeight +"\t Chnage : "+returnHeight+ "\t Repeated : "+repaeted);
scrollHeight = returnHeight;
}else {
returnHeight = (Long) jse.executeScript("var scroll = document.documentElement.scrollHeight;window.scrollTo(0, scroll); return scroll;");
System.out.println("Height : "+scrollHeight +"\t Chnage : "+returnHeight+ "\t Repeated : "+repaeted);
if (scrollHeight.intValue() == returnHeight.intValue()) {
System.out.println("Break.."+ returnHeight);
break;
} else { scrollHeight = returnHeight; }
}
repaeted++;
}
ale mam problem z webdriverjs podczas iteracji pętli.
var webdriver = require('..'),
By = webdriver.By,
until = webdriver.until;
// make sure chromedriver can be found on your system PATH
var driver = new webdriver.Builder()
.forBrowser('chrome')
.withCapabilities(webdriver.Capabilities.chrome())
.build();
driver.get('https://in.yahoo.com/').then(function(){
var window = new webdriver.WebDriver.Window(driver);
window.maximize();
driver.manage().timeouts().implicitlyWait(1000 * 3);
})
.then(function(){
console.log('Entered');
var check = 0, count = 0
for(var i = 0; i< 50; i++){
//driver.sleep(1000 * 2);
driver.executeScript('var dynamicscroll = document.documentElement.scrollHeight;window.scrollTo(0, dynamicscroll);return dynamicscroll;').then(function(height){
console.log('Check : '+check+' Height : '+height +' Repeated : '+(count++));
if(check === 0 || check !== height){console.log('continue'); check = height; }
else { console.log('break'); i = 100; }
});
}
})
.then(null, function(err) {
console.error("An error was thrown! By Promise..." + err);
});
driver.quit();
W moim kodu Mam ustalony dla pętli iteracyjne aż 50 razy i chcę zakończyć/przerwać pętlę gdy wysokość przewijania zostanie osiągnięty do końca. W tym podejściu chcę usunąć hardcode, taki jak kod java, ponieważ Nie wiem, ile razy należy powtórzyć dla innych aplikacji, których zwój jest dynamicznie zwiększany. Na przykład, aplikacja Facebook, Yahoo News ...
Czy możesz sprawdzić za pomocą tego adresu URL: 'https: // in.yahoo.com /'. a moje pytanie brzmi: chcę przerwać pętlę, gdy się zakończy, używając 'webdriverjs.', który URL, który zaznaczyłeś, zawiera' div scroll'. – Yash
@Yash, działa z https://in.yahoo.com/. Pytanie brzmi: jak przewinąć w dół do dolnej strony strony internetowej, gdy wysokość przewijania dynamicznie wzrasta, co jest dokładnie tym przykładem w przypadku 'webdriverjs'. Dodałem kolejny przykład, który przewija się, dopóki wysokość nie wzrośnie w określonym czasie. –
Czy możesz sprawdzić, że kod rzuca błąd 'ScriptTimeoutError: asynchroniczny limit czasu skryptu: wynik nie został odebrany w ciągu 0 sekund za każdym razem podczas działania. – Yash