我试图通过Web驱动程序脚本关闭一个引导模式。模态底部有关闭按钮。我正在尝试滚动到该元素,然后单击该元素但它不起作用。当使用{{1脚本抛出的方法
MoveTargetOutOfBoundsException:元素内的偏移量不能 滚动到视图中:“异常
。所以我尝试了javascript滚动方法和另一种方式。他们没有抛出任何异常,但它也没有工作。以下是代码
moveToELement(toElement)
有关如何解决此问题的任何建议。谢谢提前
答案 0 :(得分:1)
以下是您的代码无效的原因:
下面的代码可以解决上述所有问题并且也可以解决问题:
WebDriver d=new FirefoxDriver();
d.manage().window().maximize();//Maximizing window
d.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);//Giving implicit timeout of 20 seconds
//Navigating to the site
d.get("http://getbootstrap.com/javascript/");
//Clicking on the "Modal" Link text
d.findElement(By.linkText("Modal")).click();
//Clicking on the "Launch Demo modal" button
d.findElement(By.cssSelector("button[data-target='#myModal']")).click();
//Clicking on the Close button of opened Modal window
d.findElement(By.xpath("//div[@id='myModal']//button[.='Close']")).click();
答案 1 :(得分:0)
它不起作用的原因是因为你的元素Close
处于模态对话框下。所以你的className不会工作,因为在模态对话框和html中有多个元素使用该类。尝试使用xpath作为:
.//*[@id='myModal']//button[text()='Close']
如果您还要执行滚动,可以通过以下代码实现:
((JavascriptExecutor) d).executeScript("window.scrollBy(" + x + ","
+ y + ")", "");
其中x和y是通过给定xpath找到的元素的坐标。使用给定的xpath你只需找到该元素并执行element.click()
。