在this页面上,我需要单击链接 隐私权政策 (打开一个新对话框),并且必须滚动 ,使用Selenium和Java。
这是我尝试过的:
WebElement element = driver.findElement(By.xpath("/html/body/div[2]"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
它不起作用。 滚动背景页面,而不是活动对话框。
答案 0 :(得分:1)
您要滚动的div
具有唯一的ID,您需要首先获取对其的引用:
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
。
答案 1 :(得分:0)
您可以滚动到相对于平面像素数的位置:
JavascriptExecutor jsx = (JavascriptExecutor)driver;
jsx.executeScript("window.scrollBy(0,450)", "");
答案 2 :(得分:0)
要在链接上使用文本隐私权政策调用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);
}
}
浏览器快照: