2017-12-03 275 views
0

我想从Youtube学习硒。我在框架上编写了下面的简单代码。我想点击linkText这是不可见的,但手动可以滚动并点击它。我用下面的代码尝试,但得到的错误:硒测试框架

org.openqa.selenium.WebDriverException: unknown error: Element is not clickable 

我的代码:

JavascriptExecutor js = (JavascriptExecutor)driver; 
js.executeScript("window.scrollTo(0, document.body.scrollHeight);"); 

向下滚动一段:

public class Frame_Test { 

    WebDriver driver; 

    @Test 
    public void test1() 
    { 
     System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32\\chromedriver.exe"); 
     ChromeOptions options = new ChromeOptions(); 
     options.addArguments("--start-maximized"); 
     driver = new ChromeDriver(options); 

     driver.get("http://seleniumhq.github.io/selenium/docs/api/java/index.html"); 
     driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS); 

     driver.switchTo().frame("packageListFrame"); 
     driver.findElement(By.linkText("org.openqa.selenium.safari")).click(); 
    } 
} 

回答

1

你可以打倒屏幕高度使用此代码滚动像素数量:

js.executeScript("scroll(0, 300);"); 

滚动某些像素数:

js.executeScript("scroll(0, -300);"); 

希望它可以帮助你!

+0

嗨Ratmir,谢谢对于你的回应..上面的脚本正在工作,但它滚动到最后,我不能点击列表中间的webelements ... Iam肯定有一些逻辑来移动滚动我们想要的任何地方... Iam不是代码专家,只是想学习......你能告诉我在任何我们想要的地方移动滚动... – user3297196

+0

@ user3297196,我已经更新了我的答案。试一下。 –

+0

非常感谢....它的工作流畅... – user3297196

0

您可以使用以下方法:

public static void scrollToElement(By elementToken, WebDriver driver){ 
    WebElement element = driver.findElement(elementToken); 
    ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element); 
    try { 
     Thread.sleep(1000); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
} 

或者,如果你不想使用,你可以在你的代码中使用的滚动码的明确方法:

driver.get("http://seleniumhq.github.io/selenium/docs/api/java/index.html"; 
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS); 

driver.switchTo().frame("packageListFrame"); 

WebElement element = driver.findElement(By.linkText("org.openqa.selenium.safari"));((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element); 

driver.findElement(By.linkText("org.openqa.selenium.safari")).click();