java - 如何在Chrome和Firefox浏览器中通过Selenium切换框架?

标签 java selenium google-chrome firefox frame

在我的例子中,我在被测应用程序中有很多框架和很多弹出窗口,所以我每次都需要进入弹出窗口并返回到原始 Windows: Chrome :

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 的工作很好,很多次,有时我会遇到错误:没有这样的窗口

更新:对于 chrome,我只使用:

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

没有默认设置和它的工作以及使用 firefox 时,我需要在开关框架之前添加开关默认设置。

最佳答案

相关的 HTML 可以帮助我们更好地分析问题,因为目前还不清楚您是否正在处理 <frame>/<iframe> .也许 ChromeFirefox 在处理 <frame> 方面没有显着差异。/<iframe> .

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

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

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

Here you can find a relevant discussion on Is it possible to switch to an element in a frame without using driver.switchTo().frame(“frameName”) in Selenium Webdriver Java?

关于java - 如何在Chrome和Firefox浏览器中通过Selenium切换框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54645763/

相关文章:

java - Opensaml 验证与 ComponentSpace 验证

python - 在 headless 火狐(Ubuntu)上使用 selenium 使用 python 下载文件

javascript - 我可以在 CircleCI 上使用 Nightwatch.js 运行 E2E 测试吗?

javascript - 使用 JQ 的 Ajax 请求在 Chrome 中出现错误 : "Failed to load resource"

java - WebView - 如果不请求两次就无法下载文件?

java - 为什么Java中可以抛出null?

python - 如何用selenium同时打开多个chrome配置文件?

windows - Windows :D3D Compiler DLL (\third_party\angle\src) 上的 Chromium 构建失败

javascript - Chrome 和 Firefox 无法访问 iPhone 相机

java - 无法在 spring cloud 配置服务器中禁用解密服务器端