是否有可能知道我们是否已经在iframe中了
在我的应用程序中,大多数元素都在iframe
之内。是否有可能知道我们是否已经在iframe中了
所以我的POM (Page Object Model)
方法将从切换到frame
开始,然后执行actions..am代码,以便能够通过切换到帧来执行操作。
是我的代码的示例:
public void method 1()
{
driver.switchTo().frame(0);
// code to perform actions....
method 2();
driver.switchTo().defaultcontent();
}
public void method 2()
{
driver.switchTo().frame(0);
// code to perform actions....
}
按照上面的例子中,第二方法是从第一方法
的driver
将进入帧从方法1中,当方法2称为再次调用它试图切换到帧0,因为我硬编码帧索引,我认为它会工作正常(即使驱动程序是在同一帧),但它给出的错误为
“没有这样的帧例外“。
是否有可能知道当前frame
?如果我们知道框架,然后我可以添加一个条件,并决定切换或不切换,请指导。
您可以通过创建一个global
variable
当前实现这一转换frame
像下面的方法
public void method 1()
{
switchToFrame("your frame id or name"); //pass null if you want to switch to default
// code to perform actions....
method 2();
}
public void method 2()
{
switchToFrame("your frame id or name"); //pass null if you want to switch to default
// code to perform actions....
}
注: - 如果你不想哟创建一个global
variable
了解当前帧,你也可以使用JavascriptExecutor
了解如下当前帧: -
JavascriptExecutor jsExecutor = (JavascriptExecutor)driver;
String currentFrame = jsExecutor.executeScript("return self.name");
希望它会帮助你... :)
谢谢Saurabh,看起来像解决了我的问题。 –
@LVPrasad你永远欢迎......快乐学习.. :) –
您可以再次搜索框架,如果您找到框架,则知道您不在框架中。
我会尽量简化这些方法,以便尽可能不依赖彼此。如下
String currentFrame = null;
//make this currentFrame as global variable
public void switchToFrame(String frame) {
if ((null != frame) && (!"".equals(frame))) {
if (!frame.equals(currentFrame)) {
driver.switchTo().defaultContent();
driver.switchTo().frame(frame);
currentFrame = frame;
}
} else {
currentFrame = "";
driver.switchTo().defaultContent();
}
}
现在你可以在你的方法使用它: - - :
能否请您提供此HTML代码??? –
method1和method2做什么? method2不能与method1组合吗? – JeffC
你也可以放入'driver.switchTo()。defaultcontent();'方法2。因此,无论何时切换到帧调用driver.switchTo()。defaultcontent();' – Madhan