在我的情况下,我的被测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());
问题:
No such windows
?更新:我使用的是chrome:
ExemplePg.getWindowHandle();
driver.switchTo().defaultContent();
driver.switchTo().frame(sylobHomepg.get_FrameLevel2());
没有默认设置,也没有使用firefox,我不需要在开关框架之前添加默认开关。
答案 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?的相关讨论