我已经写在硒1(又名硒RC)的页面滚动使用Java以下代码:
selenium.getEval("scrollBy(0, 250)");
什么是硒2(webdriver的)的等效代码?
我已经写在硒1(又名硒RC)的页面滚动使用Java以下代码:
selenium.getEval("scrollBy(0, 250)");
什么是硒2(webdriver的)的等效代码?
对于向下滚动 :
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)", "");
或者,你可以做如下:
jse.executeScript("scroll(0, 250);");
对于向上滚动 :
jse.executeScript("window.scrollBy(0,-250)", "");
OR,
jse.executeScript("scroll(0, -250);");
滚动到页面底部:
JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
有很多方法可以上下滚动中硒的webdriver我总是使用Java脚本做同样的。
下面是如果我要向上或向下滚动,它总是对我的作品的代码
// This will scroll page 400 pixel vertical
((JavascriptExecutor)driver).executeScript("scroll(0,400)");
你可以从这里得到完整的代码滚动页面中硒
如果你要滚动的元素,然后在下面的代码会为你工作。
je.executeScript("arguments[0].scrollIntoView(true);",element);
您将获得完整的文档在这里滚动特定元素
这可能不是一个确切的回答你的问题(在webdriver的方面),但我发现java.awt
库比更稳定selenium.Keys
。 所以,使用前一个页面向下的动作将是:
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_PAGE_DOWN);
robot.keyRelease(KeyEvent.VK_PAGE_DOWN);
JavascriptExecutor js = ((JavascriptExecutor) driver);
向下滚动:
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
向上滑动:
js.executeScript("window.scrollTo(0, -document.body.scrollHeight);");
我不想使用JavaScript,或者任何外部库,所以这是我的解决方案(C#):
IWebElement body = Driver.FindElement(By.TagName("body"));
IAction scrollDown = new Actions(Driver)
.MoveToElement(body, body.Size.Width - 10, 15) // position mouse over scrollbar
.ClickAndHold()
.MoveByOffset(0, 50) // scroll down
.Release()
.Build();
scrollDown.Perform();
你也可以很容易地使这是一个扩展方法或任何元素上上下滚动。
试试这个
Actions dragger = new Actions(driver);
WebElement draggablePartOfScrollbar = driver.findElement(By.xpath("//*[@id='jobreslist_outercontainer']/div/div[2]/div"));
// drag downwards
int numberOfPixelsToDragTheScrollbarDown = 50;
for (int i=10;i<500;i=i+numberOfPixelsToDragTheScrollbarDown){
try{
// this causes a gradual drag of the scroll bar, 10 units at a time
dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform();
Thread.sleep(1000L);
}catch(Exception e1){}
}
// now drag opposite way (downwards)
numberOfPixelsToDragTheScrollbarDown = -50;
for (int i=500;i>10;i=i+numberOfPixelsToDragTheScrollbarDown){
// this causes a gradual drag of the scroll bar, -10 units at a time
dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform();
Thread.sleep(1000L);
}
你应该滚动添加到页面中选择使用所有元素Selenium.executeScript("window.scrollBy(0,450)", "")
如果你有一个大名单,通过执行多次添加滚动。 注意滚动只能去到某一点的页面,例如(0450)。
JavascriptExecutor jse = ((JavascriptExecutor) driver);
jse.executeScript("window.scrollTo(0, document.body.scrollHeight)");
此代码对我的作品。 作为我测试的页面,加载因为我们向下滚动。
JavaScript的执行一直做这项工作完美:
((JavascriptExecutor) driver).executeScript("scroll(0,300)");
其中(0,300)
分别是水平和垂直距离。 把你的距离,按您的要求。
如果你一个完美主义者,希望得到你喜欢了滚动到在第一次尝试,使用这个工具,精确的距离MeasureIt的 。 这是一个辉煌的Firefox插件。
感谢里彭铝瓦西姆的答案。 我做了一些改进。 由于网络问题,我重试三次,直到破环。
driver.get(url)
# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")
try_times = 0
while True:
# Scroll down to bottom
driver.execute_script("window.scrollBy(0,2000)")
# Wait to load page
time.sleep(scroll_delay)
# Calculate new scroll height and compare with last scroll height
new_height = driver.execute_script("return document.body.scrollHeight")
if last_height == new_height:
try_times += 1
if try_times > 3:
try_times = 0
break
last_height = new_height
如果要垂直滚动页面才能执行某些操作,您可以使用下面的JavaScript做到这一点。 ((JavascriptExecutor)驱动程序).executeScript(“window.scrollTo(0,document.body.scrollHeight)”);
Where 'JavascriptExecutor' is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
进口org.openqa.selenium.JavascriptExecutor;
2.如果你想在一个特定的元素滚动,你需要使用下面的JavaScript。
WebElement元素= driver.findElement(By.xpath(“//输入[@ ID = '电子邮件']”));((JavascriptExecutor)驱动程序).executeScript(“参数[0] .scrollIntoView();”,元素) ;
当“元素”是你要滚动的定位。
3,如果你想在一个特定的滚动协调,请使用以下的JavaScript。
((JavascriptExecutor)驱动程序).executeScript(“window.scrollBy(200,300)”); 其中,“200,300”是坐标。
4.如果你想在垂直方向向上滚动,你可以使用下面的JavaScript。 ((JavascriptExecutor)驱动程序).executeScript(“window.scrollTo(document.body.scrollHeight,0)”);
如果你想在正确的方向横向滚动,使用下面的JavaScript。 ((JavascriptExecutor)驱动程序).executeScript(“window.scrollBy(2000,0)”);
如果你想在左边方向水平滚动,请使用以下的JavaScript。 ((JavascriptExecutor)驱动程序).executeScript(“window.scrollBy(-2000,0)”);