2017-12-03 1 views
0

Ich versuche Selenium von Youtube zu lernen. Ich habe den einfachen Code unten auf Frames geschrieben. Ich möchte auf linkText klicken, die nicht sichtbar ist, aber manuell scrollen und darauf klicken kann. Ich versuche, mit dem Code unten, aber Fehler bekommen:Selen Test auf Frames

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

Mein Code:

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

Antwort

1

Sie können mit Bildschirmhöhe mit diesem Code nach unten scrollen:

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

Scrolling für einige nach unten Anzahl der Pixel:

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

Scrollen für eine bestimmte Anzahl von Pixeln:

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

Ich hoffe, es hilft Ihnen!

+0

Hallo Ratmir, Dank für deine Antwort .. Das obige Skript funktioniert, aber es scrollt bis zum Ende und ich kann nicht die Webelemente anklicken, die sich in der Mitte der Liste befinden ... Ich bin mir sicher, dass es eine Logik gibt, die Schriftrolle irgendwo hin zu bewegen ... Ich bin kein Experte im Code, versuche nur zu lernen ... kannst du mir bitte sagen, dass ich die Schriftrolle überall hinbewegen soll, wo wir wollen ... – user3297196

+0

@ user3297196, ich habe meine Antwort aktualisiert. Anprobieren. –

+0

Vielen Dank .... Es funktioniert reibungslos ... – user3297196

0

können Sie die folgenden Methoden:

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

Oder wenn Sie wollen nicht die explizite Methode verwenden Sie das Scroll-Code in Ihrem Code verwenden können:

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