框架上的硒测试

时间:2017-12-03 08:25:57

标签: java selenium selenium-webdriver selenium-chromedriver

我正在尝试从Youtube学习Selenium。我在Frames上写了下面的简单代码。我想点击linkText,这是不可见的,但手动可以滚动并点击它。我正在尝试使用以下代码,但收到错误:

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

我的代码:

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();

    }

}

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码向下滚动屏幕高度:

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

向下滚动一些像素:

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

向上滚动一些像素:

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

希望它可以帮到你!

答案 1 :(得分: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();