【问题标题】:How to switch frames through Selenium in Chrome and Firefox browser?如何在 Chrome 和 Firefox 浏览器中通过 Selenium 切换帧?
【发布时间】:2019-07-05 20:16:39
【问题描述】:

在我的情况下,我在被测 APP 中有很多框架和很多弹出窗口,所以我每次都需要进入弹出窗口并返回到原始 Windows: 铬:

ExemplePg.getWindowHandle(); 
driver.switchTo().defaultContent()
driver.switchTo().frame(sylobHomepg.get_FrameLevel2());

火狐:
我需要添加“defaultContent”:

 ExemplePg.getWindowHandle();
 driver.switchTo().defaultContent();
 driver.switchTo().frame(sylobHomepg.get_FrameLevel2());

问题:

  1. 为什么我在 chrome 和 Firefox 之间存在这种差异?
  2. 我在 Jenkins 的工作很好,很多次,有时我会出错:No such windows?

更新:我只使用 chrome:

ExemplePg.getWindowHandle(); 
driver.switchTo().defaultContent();
driver.switchTo().frame(sylobHomepg.get_FrameLevel2()); 

没有默认值和它的工作并且没有使用firefox我需要在切换帧之前添加切换默认值。

【问题讨论】:

    标签: java selenium google-chrome firefox frame


    【解决方案1】:

    相关的 HTML 将帮助我们以更好的方式分析问题,因为目前尚不清楚您是否正在处理 <frame> / <iframe>。 Chrome 和 Firefox 在处理<frame> / <iframe> 方面可能没有显着差异。

    在<frame> / <iframe> 之间切换之前没有必要ExemplePg.getWindowHandle();,但重要的是:

    • 诱导 WebDriverWait 使所需的框架可用并切换到它,如下所示。

      new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(driver.findElement(sylobHomepg.get_FrameLevel2())));
      

    在这里你可以找到Is it possible to switch to an element in a frame without using driver.switchTo().frame(“frameName”) in Selenium Webdriver Java?的相关讨论

    【讨论】:

    • 就我而言,我使用的是 ExemplePg.getWindowHandle();作为弹出窗口在窗口之间切换
    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 2019-09-05
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 2019-07-02
    • 1970-01-01
    相关资源
    最近更新 更多