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

Java 在SeleniumWebDriver中显示弹出窗口时如何防止背景滚动?,java,selenium,selenium-webdriver,webdriver,Java,Selenium,Selenium Webdriver,Webdriver,在selenium webdriver中显示弹出窗口时如何防止背景滚动? 场景: 打开一个弹出窗口,我必须对其执行一些操作/操作,但如果我立即单击弹出窗口中的字段,页面将在后台滚动,我的弹出窗口将向上滚动,并且对于任何交互,selenium都将不可见 期望值: 我按了一下按钮 此时会打开一个弹出窗口 我必须添加一些文本并选择一些值 然后关闭 但是我不能执行这些操作,因为背景会滚动,弹出窗口也会滚动到顶部 在文本框中输入任何文本之前,您可以使用JavascriptExecutor将字段滚动到视口中

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

场景:

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

期望值:

  • 我按了一下按钮
  • 此时会打开一个弹出窗口
  • 我必须添加一些文本并选择一些值
  • 然后关闭
  • 但是我不能执行这些操作,因为背景会滚动,弹出窗口也会滚动到顶部

  • 在文本框中输入任何文本之前,您可以使用
    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");
    

    有两个选项可以处理此场景:-

  • 如果屏幕上有弹出窗口,您可以禁用背景滚动。只需设置属性
    overflow=hidden
    ,就可以使用
    JavascriptExecutor
  • 一旦您能够启动弹出窗口,您就可以将弹出窗口滚动到视图中,这样Webdriver就能够识别元素,而无需抛出
    异常
    ,您也可以使用
    JavascriptExecutor

  • 我正在获取“org.openqa.selenium.WebDriverException:arguemts未定义”org.openqa.selenium.WebDriverException:arguments[0]。scrolIntoView不是函数,或者在打开任何弹出窗口时如何停止后台滚动?很好!!很高兴它起作用了。别忘了接受答案!!:)