我使用以下代码在网页中查找iframe
string win = diver.CurrentWindowHandle;
driver.switchTo().Window(win);
driver.switchTO().defautContent();
然后我尝试了以下的事情,但仍然发现NO帧发现错误。
driver.switchTo().Frame(1); (or)
driver.switchTo().Frame(0);
driver.switchTo().Frame(driver.findelement(by.id(By.xpath("//xpath of d frame")))
driver.switchTo().Frame(driver.findelement(by.id(By.tagname(iframe)))
driver.switchTo().Frame(driver.findelement(by.id(By.className(classnamehere)))
答案 0 :(得分:0)
让我们分析一下代码中发生的事情:
代码尝试1:
string win = diver.CurrentWindowHandle;
driver.switchTo().Window(win);
所有框架仍然附加到相同的 windowHandle
。所以driver.switchTo().Window(win);
不是一个选择。
代码尝试2:
driver.switchTo().Frame(1);
driver.switchTo().Frame(0);
由于我们不确定frames
的加载顺序,尝试通过 index
切换帧可能无法帮助我们。
代码尝试3:
driver.switchTo().Frame(driver.findelement(by.id(By.xpath("//xpath of d frame")))
如果我们提供了xpath
的有效且唯一的 frame
,这应该有效。
代码尝试4:
driver.switchTo().Frame(driver.findelement(by.id(By.tagname(iframe)))
这将尝试切换到第一个可用的iframe
,它可能不是预期的或可见的。因此失败。
代码尝试5:
driver.switchTo().Frame("contentIFrame0");
当 visibility
属性设置为 hidden
代码尝试6:
driver.switchTo().Frame("contentIFrame1");
此选项必须有效,但您与HTML
分享的WebElements
不明确。