如何在Chrome和Firefox浏览器中通过Selenium切换帧?

时间:2019-02-12 08:29:56

标签: java selenium google-chrome firefox frame

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

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

FireFox:
 我需要添加“ 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,我不需要在开关框架之前添加默认开关。

1 个答案:

答案 0 :(得分:0)

相关的 HTML 本可以帮助我们以更好的方式分析问题,因为仍不清楚您是否在处理<frame> / <iframe>。在处理<frame> / <iframe>上, Chrome Firefox 之间可能没有显着差异。

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

  • 诱导 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?的相关讨论