我已經使用Java編寫的硒1(又名硒RC)的頁面滾動下面的代碼(硒2):頁面滾動中硒的webdriver向上或向下用java
selenium.getEval("scrollBy(0, 250)");
什麼是等價代碼Selenium 2(WebDriver)?
我已經使用Java編寫的硒1(又名硒RC)的頁面滾動下面的代碼(硒2):頁面滾動中硒的webdriver向上或向下用java
selenium.getEval("scrollBy(0, 250)");
什麼是等價代碼Selenium 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);");
試試這個
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);
}
我其實很喜歡這個,因爲它會滾動用戶的方式 – KthProg
這可能不是您的問題的確切答案(根據WebDriver),但我發現java.awt
庫比selenium.Keys
更穩定。 所以,使用前一個頁面向下的動作將是:
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_PAGE_DOWN);
robot.keyRelease(KeyEvent.VK_PAGE_DOWN);
有很多方法和向上滾動在硒的webdriver下來,我一直使用Java腳本做同樣的。
下面是如果我要向上或向下滾動
// This will scroll page 400 pixel vertical
((JavascriptExecutor)driver).executeScript("scroll(0,400)");
你可以從這裏Scroll Page in Selenium
得到充分的代碼。如果你想爲一個單元,然後下面滾動,它總是對我的作品的代碼一段代碼將爲你工作。
je.executeScript("arguments[0].scrollIntoView(true);",element);
你會得到完整的doc這裏Scroll for specific Element
這工作,如果我不得不向下滾動。我怎樣才能向上滾動頁面? –
代碼的第一個代碼段只滾動頁面,而不是元素本身,我該怎麼做? –
滾動到頁面的底部:
JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
只是提及,它是向下滾動 – Tarun
您應該添加滾動到頁面,選擇使用Selenium.executeScript("window.scrollBy(0,450)", "")
所有元素。
如果您有一個大的列表,請在執行過程中多次添加滾動。請注意,滾動只能轉到頁面中的某個點,例如(0,450)。
JavascriptExecutor jse = ((JavascriptExecutor) driver);
jse.executeScript("window.scrollTo(0, document.body.scrollHeight)");
此代碼適用於我。作爲我正在測試的頁面,在我們向下滾動時加載。
的Javascript執行一直做這項工作完美:
((JavascriptExecutor) driver).executeScript("scroll(0,300)");
其中(0,300)
分別爲水平和垂直距離。按照您的要求放置您的距離。
如果您是完美主義者,想要獲得您想要在第一次嘗試時滾動的確切距離,請使用此工具,MeasureIt。這是一個非常棒的Firefox附加組件。
我不想使用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();
你也可以很容易地使這是一個擴展方法或任何元素上下滾動。
此代碼將無法在無頭瀏覽器上工作 – raffamaiden
@raffamaiden把頭放在您的瀏覽器大聲笑......我不知道爲什麼有人想測試瀏覽器,他們的用戶aren實際上不會使用 – KthProg
你是對的。但OP沒有說明它正在測試一個應用程序。您也可以將Selenium用於其他目的(例如網頁瀏覽)。 – raffamaiden
JavascriptExecutor js = ((JavascriptExecutor) driver);
向下滾動:
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
向上滾動:
js.executeScript("window.scrollTo(0, -document.body.scrollHeight);");
感謝里彭鋁瓦西姆的答案。我做了一些改進。由於網絡問題,我重試三次直到斷開循環。
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
上述代碼用於向下滾動。向上滾動:jse.executeScript(「scroll(250,0)」);只有值會反轉 –
否 - 它將滾動到右側。向上滾動將滾動(0,-250)' – Stephen
謝謝斯蒂芬。滾動(250,0)和滾動(0,-250)都適用於向上滾動。 –