在我的例子中,我在被测应用程序中有很多框架和很多弹出窗口,所以我每次都需要进入弹出窗口并返回到原始 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());
问题:
- 为什么我的 chrome 和 Firefox 之间存在这种差异??
- 我在 Jenkins 的工作很好,很多次,有时我会遇到错误:
没有这样的窗口
?
更新:对于 chrome,我只使用:
ExemplePg.getWindowHandle();
driver.switchTo().defaultContent();
driver.switchTo().frame(sylobHomepg.get_FrameLevel2());
没有默认设置和它的工作以及使用 firefox 时,我需要在开关框架之前添加开关默认设置。
最佳答案
相关的 HTML 可以帮助我们更好地分析问题,因为目前还不清楚您是否正在处理 <frame>
/<iframe>
.也许 Chrome 和 Firefox 在处理 <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/