Как сделать селен, чтобы прокрутить, чтобы просмотреть способность элемента - PullRequest
0 голосов
/ 10 января 2020

Привет. Все, у меня есть вопрос относительно селена. У меня очень длинная форма, и я хочу немного прокрутить вниз для ввода данных. Я не хочу, чтобы он прокручивался до тех пор, пока не отобразится элемент.

Я использовал этот код:

WebElement element = driver.findElement(locator);
        JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("arguments[0].scrollIntoView();", element);

Он не работал, так как прокрутка селена, чтобы соответствовать вниз, это их как он будет прокручиваться к этому элементу, чтобы я мог вводить в него данные, например, для прокрутки, пока элемент не окажется в модле экрана. Я не знаю, какова цель прокрутки в поле зрения, если оно прокручивается, чтобы не видеть пожелания

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Пожалуйста, попробуйте с этим. Меня устраивает.

 public void scrollElementToCenter(WebElement element) {

        try {
            if (EnvironmentConstants.RUNNING_ON_CHROME) {
                ((JavascriptExecutor) driver)
                        .executeScript("arguments[0].scrollIntoView({behavior: \"auto\", block: \"center\", inline: \"nearest\"});", element);
            } else {
                ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(false);", element);
            }
        } catch (UnsupportedOperationException exception) {
            //LOGGER.error("UnsupportedOperationException occurred : " + exception.getMessage(), exception);
        }
    }

для Chrome браузера вы можете использовать его

((JavascriptExecutor) driver)
                        .executeScript("arguments[0].scrollIntoView({behavior: \"auto\", block: \"center\", inline: \"nearest\"});", element);
0 голосов
/ 10 января 2020

Если вы используете ... прокрутите немного вниз для ввода данных ... , у вас есть несколько способов добиться этого:

  • Вы можете вызвать WebDriverWait для elementToBeClickable(), который автоматически прокрутит требуемый элемент в Окно просмотра следующим образом:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(driver.findElement(locator))).sendKeys("Bastian");
    
  • Вы также можете использовать Actions метод класса moveToElement() в сочетании с sendKeys(), который также автоматически прокрутит требуемый элемент в Окно просмотра следующим образом:

    new Actions(driver).moveToElement(driver.findElement(locator)).sendKeys("Bastian").build().perform();
    
  • Вы все еще можете использовать метод scrollIntoView(), чтобы сначала прокрутить элемент, а затем вызвать WebDriverWait для elementToBeClickable() следующим образом:

    ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", driver.findElement(locator));
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(driver.findElement(locator))).sendKeys("Bastian");
    
  • Вы также можете использовать метод scrollBy(), чтобы прокрутить вниз определенное количество xy-coord (скорректировано) следующим образом, а затем найти элемент:

    ((JavascriptExecutor) driver).executeScript("window.scrollBy(0,400)");
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(driver.findElement(locator))).sendKeys("Bastian");
    

Ссылки

Вы можете найти пару соответствующих обсуждений в:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...