有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

框架上的java Selenium测试

我正在努力从Youtube上学习Selenium。我已经在框架上编写了下面的简单代码。我想点击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) 个答案

  1. # 1 楼答案

    您可以使用以下方法:

    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();
    
  2. # 2 楼答案

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

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

    向下滚动一定数量的像素:

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

    向上滚动一定数量的像素:

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

    希望它能帮助你