在selenium webdriver中显示弹出窗口时如何防止背景滚动?

时间:2016-11-24 07:26:17

标签: java selenium selenium-webdriver webdriver

如何在selenium webdriver中显示弹出窗口时阻止背景滚动?

场景

打开一个弹出窗口,我必须对其执行一些操作/操作,但是如果我单击弹出窗口中的字段,页面会在后台滚动,我的弹出窗口向上滚动,对于任何交互都会变为selenium不可见

预期:

  1. 我点击了一个按钮
  2. 打开一个弹出窗口
  3. 我必须添加一些文字并选择一些值
  4. 然后关闭
  5. 但是这些我无法执行,因为背景滚动和弹出窗口也滚动到顶部

2 个答案:

答案 0 :(得分:0)

您可以使用JavascriptExecutor将字段滚动到视口中,然后在文本框中输入任何文本。请参阅下面的示例。

//After modal window is opened
WebElement txtBox = driver.findElement(By.css("input[type='text']")); //textBoxPresent in popup 
txtBox.click(); //now the background will scroll to top.
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollIntoView(true)",txtBox); // this will scroll the textbox to the view port hence available for selenium to interact
txtBox.sendKeys("someText");

答案 1 :(得分:0)

有两种方法可以处理这种情况: -

  1. 如果屏幕上有弹出窗口,您可以禁用背景滚动。您只需设置属性overflow = hidden,即可使用JavascriptExecutor
  2. 实现相同功能
  3. 一旦你能够启动弹出窗口,你只需将弹出窗口滚动到视图中,这样Webdriver就可以识别元素而不抛出Exceptions,这也可以实现使用{{ 1}}