我使用Selenium WebDriver自動執行瀏覽器測試。 我的瀏覽器標題是浮動的,並且始終存在,與瀏覽器滾動無關。使用Selenium WebDriver與Java滾動
因此,當我點擊瀏覽器當前可見區域下面的某些元素時,硒會嘗試將元素滾動到視圖中並單擊它們。
但是由於自動滾動,元素在浮動標題後面滾動,當對它們執行任何操作時,頁面標題中的元素將被點擊。
有沒有什麼辦法來限制WebDriver默認滾動條?
我使用Selenium WebDriver自動執行瀏覽器測試。 我的瀏覽器標題是浮動的,並且始終存在,與瀏覽器滾動無關。使用Selenium WebDriver與Java滾動
因此,當我點擊瀏覽器當前可見區域下面的某些元素時,硒會嘗試將元素滾動到視圖中並單擊它們。
但是由於自動滾動,元素在浮動標題後面滾動,當對它們執行任何操作時,頁面標題中的元素將被點擊。
有沒有什麼辦法來限制WebDriver默認滾動條?
Locatable hoverItem = (Locatable) driver.findElement(By.xpath("//li[text()='Reklama w Google']"));
int y = hoverItem.getCoordinates().getLocationOnScreen().getY();
((JavascriptExecutor)driver).executeScript("window.scrollBy(0,"+y+");");
//編譯這個的C#4.5版本 int y =((ILocatable)element).Coordinates.LocationInViewport.Y; ((IJavaScriptExecutor)驅動程序).ExecuteScript(「窗口。scrollBy(0,「+ y +」);「); } – Aligned 2013-11-05 18:05:26
window.scroll而不是scrollBy對我來說效果更好 – Aligned 2013-11-08 17:46:48
同樣如果你有一個html ID,你可以使用下面的 – EsotericNonsense 2014-06-25 21:15:19
如果你想使用硒webdriver的Firefox窗口上滾動,方式之一就是在Java代碼中使用JavaScript中,javeScript代碼向下滾動如下:
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("window.scrollTo(0,Math.max(document.documentElement.scrollHeight," +
"document.body.scrollHeight,document.documentElement.clientHeight));");
適合我直接滾動到下:) - 對於那些想要一個JS /量角器版本'browser.executeScript(「window.scrollTo(0,Math.max(document.documentElement.scrollHeight,document.body.scrollHeight, document.documentElement.clientHeight));「);' – 2014-03-13 12:00:30
您可以使用JavaScript滾動到必要位置您需要使用scrollTo方法而不是scrollBy方法才能使用它。
public void scrollToElement(By by) {
Locatable element = (Locatable) selenium.findElement(by);
Point p= element.getCoordinates().getLocationOnScreen();
JavascriptExecutor js = (JavascriptExecutor) selenium;
js.executeScript("window.scrollTo(" + p.getX() + "," + (p.getY()+150) + ");");
}
使用下面的代碼向上滾動和向下滾動
Actions dragger = new Actions(driver);
WebElement draggablePartOfScrollbar = driver.findElement(By.xpath("<Scroll bar Element >"));
// 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);
}
簡單使用 .sendKeys(Keys.PAGE_DOWN);
當你的元素是可見的,只要按一下就可以了,通過.click(element).perform();
工作對我來說是這樣的:
clicker = new Actions(driver);
clicker.sendKeys(Keys.PAGE_DOWN);
Thread.sleep(1000);
clicker.click(button).perform();
Thread.sleep(1000);
滾動到頂部可以完成:
private void scrollToTop() {
JavascriptExecutor js = (JavascriptExecutor) webDriver;
js.executeScript("window.scrollTo(0, 0);");
}
對於向下滾動:
System.setProperty("webdriver.chrome.driver",
"/home/shreetesh/chromedriver");
WebDriver driver = new ChromeDriver();
String url = "https://en.wikipedia.org/wiki/Main_Page";
driver.get(url);
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("scroll(0, 25000);");
要向上滾動只是代替滾動的值(2500,0)。
最近,我有這個問題,因爲一個Drupal菜單阻塞元素,當我跑這個代碼:
public void scrollTo(WebElement x) {
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", x);
}
referencing this page後,我更新了使用此代碼的布爾值設置爲false,而它的偉大工程:
public void scrollTo(WebElement x) {
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(false);", x);
}
我知道你想用Selenium WebDriver控制滾動。有一個類似的問題討論/解決[這裏](http://sqa.stackexchange.com/a/1292/1316),我希望這是有用的。 – Ziran 2012-02-26 12:48:59
謝謝,我寫了一個JavaScript套件我的需要 – 2012-03-11 03:20:12
您可以在這裏得到解決方案:http://stackoverflow.com/questions/12293158/page-scroll-up-or-down-in-webdriver-selenium-2-using -java OR,http://stackoverflow.com/questions/11554370/vertical-scroll-down-and-scroll-up-in-webdriver-with-java – 2014-04-04 05:21:43