我正在尝试从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();
}
}
答案 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();