【问题标题】:Unable to move focus using Action class in selenium webdriver无法使用 selenium webdriver 中的 Action 类移动焦点
【发布时间】:2016-09-15 12:57:19
【问题描述】:

Hello 我正在使用由 所以当我点击一个按钮,即“click1”时,它会弹出一个 div 窗口.. 所以在这个弹出窗口中,我可以使用动作类来玩元素

WebElement element = wd.findElement(By.className("qx-window"));
Actions actions = new Actions(wd);
actions.moveToElement(element).click().perform();

现在从这个弹出窗口中,当我点击另一个按钮时,它再次弹出另一个弹出窗口,我再次尝试使用动作类,但无法将焦点设置在新弹出窗口上

所以场景是主窗口->popup->popup

我可以从第一个弹出窗口中移除焦点

听到下面的硒代码不起作用,这就是我使用操作的原因

for (String popup : wd.getWindowHandles())
{
wd.switchTo().window(popup);
}

【问题讨论】:

  • 分享打开的弹出窗口的屏幕截图
  • 你好 Saurabh 因为隐私我无法为您提供真实的屏幕截图但我尝试制作示例模板....希望它能为您提供完整的使用信息
  • 所有这些弹出窗口都在新窗口或同一窗口中打开??
  • 新窗口....由
    制作.....我试过
  • 错误日志:org.openqa.selenium.WebDriverException:元素在点(960、483)不可点击。其他元素会收到点击:
    (警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:14 毫秒

标签: selenium selenium-webdriver webdriver action


【解决方案1】:

试试下面的流程

        //Store main window handle in one variable
        String mainWindowHandle = driver.getWindowHandle();

        //click something on window to open popup1
        Set<String> windowHandles = driver.getWindowHandles(); //It returns Set of available window handles

        //from above set get popup1 handle and switch control to popup1
        //==switch control to pop-up1
        windowHandles.remove(mainWindowHandle);
        String popup1Handle=(String)windowHandles.toArray()[0];
        driver.switchTo().window(popup1Handle);

        //do your operations in popup1
        //===== YOUR ACTIONS GOES HERE FOR POPUP1

        //click on button in popup1 which will open popup2

        //switch the control to popup2
        windowHandles = driver.getWindowHandles(); //It returns Set of available window handles, here it returns 3 window handles
        windowHandles.remove(mainWindowHandle);
        windowHandles.remove(popup1Handle);
        String popup2Handle=(String)windowHandles.toArray()[0];
        driver.switchTo().window(popup2Handle);
        //do your operations in popup2
        //===== YOUR ACTIONS GOES HERE FOR POPUP2


        driver.close(); // this will close popup2 as control is in popup2

        //switch the control to main window again
        driver.switchTo().window(mainWindowHandle);

【讨论】:

  • 谢谢,但此代码不起作用,因为弹出窗口是由
    制作的,我已经尝试了上面的代码.....错误在 SET 它只存储当前窗口 ID 和弹出是用 div TAG...
  • 那就不是新窗口了。因此,尝试相对于该父 div 定位器定位元素。示例:By.cssSelector("div[id='popup1'] input[type='button']")
  • 我试过了,但是......我想为一个 div 使用两个参数,即类名和 tabindex。那么我们如何在 cssSelector 中实现假设
    那么我们如何同时使用这两者.....?
  • 你可以通过像这样指定==> By.cssSelector("div[class-'design_highlighted'][tabindex='4']")
猜你喜欢
相关资源
最近更新 更多
热门标签