问题描述
我尝试将WebDriver端点与Ranorex一起使用,并且当Ranorex使用简单路径工作时,所有工作都很好,但是当它与iframe一起工作时,一切工作都很好。
如果提供示例,效果会更好:
<div id="layout">
<span id="element1"></span>
<iframe id="frame1">
#document
<html>
<span id="element2"></span>
</html>
</iframe>
</div>
- Ranorex端点使用:
-
我可以使用以下方式访问任何元素Ranorex端点:
//span[#'element1'] //iframe[#'frame1']//span[#'element2']
- WebDriver端点使用:
-
我可以访问iframe外部包含的元素:(包括iframe本身)
//span[#'element1'] //iframe[#'frame1']
-
当我尝试使用WebDriver端点访问iframe中包含的任何元素时出现错误:
//iframe[#'frame1']//span[#'element2']
如何在iframe中使用元素?
解决方法
我找到了解决方法。
与硒一样,我们需要在帧之间切换。 我发现WebDriverDocument具有切换框架的功能:
WebDriverDocument wd = WebDriverDocument.FromPatch("//*[1]");
wd.SwitchToFrame("//iframe[@id='frame1']","xpath");
// wd.SwitchToFrame("frane1","id"); - also availabled
之后,我可以管理包含内部iframe的元素:
WebElement wl = "//span[#'element2']";