Как прокрутить вниз с Selenium? - PullRequest
       11

Как прокрутить вниз с Selenium?

0 голосов
/ 25 октября 2018

На этой странице мне нужно нажать на ссылку Политика конфиденциальности (открывается новое диалоговое окно), и я должен прокрутить вниз , используя Selenium и Java.

Вот что я пробовал:

WebElement element = driver.findElement(By.xpath("/html/body/div[2]"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);

это не работает. Прокручивает фоновую страницу вместо активного диалога.

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

div, который вы хотите прокрутить, имеет уникальный идентификатор, и вам нужно сначала получить ссылку на него:

WebElement element = driver.findElement(By.id('document-content'));

После этого вы можете получить последнего потомка в рамках этой политики конфиденциальности div:

List<WebElement> children = element.findElements(By.tagName("div"));
assertTrue(children.size() > 0);
WebElement elementToScrollTo = children.get(children.size()-1);

Теперь вы можете прокрутить до elementToScrollTo.

0 голосов
/ 25 октября 2018

Чтобы вызвать click() по ссылке с текстом Политика конфиденциальности , вам просто нужно настроить WebDriverWait , чтобы требуемый элемент был активным, затем снова вызовите WebDriverWait , чтобы требуемый элемент был видимым , а затем прокрутите для просмотра , и вы можете использовать следующее решение:

  • Блок кода:

    import org.openqa.selenium.By;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    
    public class insly_Privacy_Policy {
    
        public static void main(String[] args) {
    
            System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
            WebDriver driver=new FirefoxDriver();
            driver.get("https://signup.insly.com/signup");
            new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("privacy policy"))).click();
            WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated((By.xpath("//div[@id='document-content']//following::div[contains(.,'Revision')]"))));
            ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
        }
    }
    
  • Снимок браузера:

revision

0 голосов
/ 25 октября 2018

Вы можете прокрутить к месту относительно количества пикселей на плоскости:

JavascriptExecutor jsx = (JavascriptExecutor)driver;
jsx.executeScript("window.scrollBy(0,450)", "");
...